You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by rw...@apache.org on 2005/11/01 23:13:39 UTC
svn commit: r330134 [2/2] - in /portals/jetspeed-2/trunk:
components/page-manager/src/java/JETSPEED-INF/castor/
components/page-manager/src/java/JETSPEED-INF/ojb/
components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/
components/page-mana...
Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/impl/DatabasePageManager.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/impl/DatabasePageManager.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/impl/DatabasePageManager.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/impl/DatabasePageManager.java Tue Nov 1 14:13:18 2005
@@ -1,8 +1,25 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed 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.page.impl;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.Map;
+import org.apache.commons.collections.map.LRUMap;
import org.apache.jetspeed.components.dao.InitablePersistenceBrokerDaoSupport;
import org.apache.jetspeed.exception.JetspeedException;
import org.apache.jetspeed.om.common.SecurityConstraint;
@@ -21,7 +38,6 @@
import org.apache.jetspeed.om.page.Link;
import org.apache.jetspeed.om.page.Page;
import org.apache.jetspeed.om.page.PageSecurity;
-import org.apache.jetspeed.om.page.Property;
import org.apache.jetspeed.om.page.impl.FragmentImpl;
import org.apache.jetspeed.om.page.impl.PageImpl;
import org.apache.jetspeed.page.DelegatingPageManager;
@@ -37,6 +53,7 @@
import org.apache.jetspeed.page.document.DocumentNotFoundException;
import org.apache.jetspeed.page.document.NodeException;
import org.apache.jetspeed.page.document.UnsupportedDocumentTypeException;
+import org.apache.jetspeed.page.document.impl.NodeAttributes;
import org.apache.ojb.broker.query.Criteria;
import org.apache.ojb.broker.query.QueryByCriteria;
import org.apache.ojb.broker.query.QueryFactory;
@@ -45,11 +62,11 @@
* DatabasePageManager
*
* @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
* @version $Id: $
*/
-public class DatabasePageManager extends InitablePersistenceBrokerDaoSupport
- implements PageManager
+public class DatabasePageManager extends InitablePersistenceBrokerDaoSupport implements PageManager
{
private static Map modelClasses = new HashMap();
static
@@ -58,7 +75,6 @@
modelClasses.put("PageImpl.class", PageImpl.class);
modelClasses.put("FolderImpl.class", FolderImpl.class);
//modelClasses.put("LinkImpl.class", LinkImpl.class);
- //modelClasses.put("PropertyImpl.class", PropertyImpl.class);
//modelClasses.put("MenuDefinitionImpl.class", MenuDefinitionImpl.class);
//modelClasses.put("MenuExcludeDefinitionImpl.class", MenuExcludeDefinitionImpl.class);
//modelClasses.put("MenuIncludeDefinitionImpl.class", MenuIncludeDefinitionImpl.class);
@@ -70,15 +86,13 @@
private DelegatingPageManager delegator;
- public DatabasePageManager(
- String repositoryPath,
- boolean isPermissionsSecurity,
- boolean isConstraintsSecurity)
+ private LRUMap databaseNodeCache;
+ public DatabasePageManager(String repositoryPath, int cacheSize, boolean isPermissionsSecurity, boolean isConstraintsSecurity)
{
super(repositoryPath);
- System.out.println("Page Manager repo = " + repositoryPath);
delegator = new DelegatingPageManager(isPermissionsSecurity, isConstraintsSecurity, modelClasses);
+ databaseNodeCache = new LRUMap(cacheSize);
}
/* (non-Javadoc)
@@ -135,14 +149,6 @@
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.page.PageManager#newProperty()
- */
- public Property newProperty()
- {
- return delegator.newProperty();
- }
-
- /* (non-Javadoc)
* @see org.apache.jetspeed.page.PageManager#newMenuDefinition()
*/
public MenuDefinition newMenuDefinition()
@@ -203,22 +209,49 @@
*/
public Page getPage(String path) throws PageNotFoundException, NodeException
{
- Criteria filter = new Criteria();
- filter.addEqualTo("path", path);
- QueryByCriteria query = QueryFactory.newQuery(PageImpl.class, filter);
- Page page = (Page) getPersistenceBrokerTemplate().getObjectByQuery(query);
- if (page == null)
+ // construct page attributes from path
+ NodeAttributes attributes = new NodeAttributes(path);
+ path = attributes.getCanonicalPath();
+
+ // test cache with canonical path if available
+ if (databaseNodeCache.containsKey(path))
{
- throw new PageNotFoundException("Page " + path + " not found.");
+ // return cached page or throw exception if cached as null
+ Page page = (Page) databaseNodeCache.get(path);
+ if (page == null)
+ {
+ throw new PageNotFoundException("Page " + path + " not found.");
+ }
+ return page;
+ }
+
+ // retrieve page from database
+ try
+ {
+ Criteria filter = attributes.newQueryCriteria();
+ QueryByCriteria query = QueryFactory.newQuery(PageImpl.class, filter);
+ Page page = (Page) getPersistenceBrokerTemplate().getObjectByQuery(query);
+
+ // add to or delete entry in document cache
+ databaseNodeCache.put(path, page);
+
+ // return page or throw exception
+ if (page == null)
+ {
+ throw new PageNotFoundException("Page " + path + " not found.");
+ }
+ return page;
+ }
+ catch (Exception e)
+ {
+ throw new PageNotFoundException("Page " + path + " not found.", e);
}
- return page;
}
/* (non-Javadoc)
* @see org.apache.jetspeed.page.PageManager#getContentPage(java.lang.String)
*/
- public ContentPage getContentPage(String path)
- throws PageNotFoundException, NodeException
+ public ContentPage getContentPage(String path) throws PageNotFoundException, NodeException
{
// TODO Auto-generated method stub
return null;
@@ -227,9 +260,7 @@
/* (non-Javadoc)
* @see org.apache.jetspeed.page.PageManager#getLink(java.lang.String)
*/
- public Link getLink(String name) throws DocumentNotFoundException,
- UnsupportedDocumentTypeException, FolderNotFoundException,
- NodeException
+ public Link getLink(String name) throws DocumentNotFoundException, UnsupportedDocumentTypeException, FolderNotFoundException, NodeException
{
// TODO Auto-generated method stub
return null;
@@ -238,9 +269,7 @@
/* (non-Javadoc)
* @see org.apache.jetspeed.page.PageManager#getPageSecurity()
*/
- public PageSecurity getPageSecurity() throws DocumentNotFoundException,
- UnsupportedDocumentTypeException, FolderNotFoundException,
- NodeException
+ public PageSecurity getPageSecurity() throws DocumentNotFoundException, UnsupportedDocumentTypeException, FolderNotFoundException, NodeException
{
// TODO Auto-generated method stub
return null;
@@ -249,163 +278,220 @@
/* (non-Javadoc)
* @see org.apache.jetspeed.page.PageManager#getFolder(java.lang.String)
*/
- public Folder getFolder(String folderPath) throws FolderNotFoundException,
- InvalidFolderException, NodeException
+ public Folder getFolder(String folderPath) throws FolderNotFoundException, InvalidFolderException, NodeException
{
- Criteria filter = new Criteria();
- filter.addEqualTo("path", folderPath);
- QueryByCriteria query = QueryFactory.newQuery(FolderImpl.class, filter);
- Folder folder = (Folder) getPersistenceBrokerTemplate().getObjectByQuery(query);
- if (folder == null)
+ // construct folder attributes from path
+ NodeAttributes attributes = new NodeAttributes(folderPath);
+ folderPath = attributes.getCanonicalPath();
+
+ // test cache with canonical path if available
+ if (databaseNodeCache.containsKey(folderPath))
+ {
+ // return cached folder or throw exception if cached as null
+ Folder folder = (Folder) databaseNodeCache.get(folderPath);
+ if (folder == null)
+ {
+ throw new FolderNotFoundException("Folder " + folderPath + " not found.");
+ }
+ return folder;
+ }
+
+ // retrieve folder from database
+ try
+ {
+ Criteria filter = attributes.newQueryCriteria();
+ QueryByCriteria query = QueryFactory.newQuery(FolderImpl.class, filter);
+ Folder folder = (Folder) getPersistenceBrokerTemplate().getObjectByQuery(query);
+
+ // add to or delete entry in folder cache
+ databaseNodeCache.put(folderPath, folder);
+
+ // return folder or throw exception
+ if (folder == null)
+ {
+ throw new FolderNotFoundException("Folder " + folderPath + " not found.");
+ }
+ return folder;
+ }
+ catch (Exception e)
{
- throw new FolderNotFoundException("Folder " + folderPath + " not found.");
+ throw new FolderNotFoundException("Folder " + folderPath + " not found.", e);
}
- return folder;
}
/* (non-Javadoc)
* @see org.apache.jetspeed.page.PageManager#updatePage(org.apache.jetspeed.om.page.Page)
*/
- public void updatePage(Page page) throws JetspeedException,
- PageNotUpdatedException
+ public void updatePage(Page page) throws JetspeedException, PageNotUpdatedException
{
- System.out.println("storing page " + page.getPath());
-
- // look up and set parent folder if necessary
- if (page.getParent() == null)
+ try
{
- // access folder by path
- String pagePath = page.getPath();
- String parentPath = pagePath.substring(0, pagePath.lastIndexOf(Folder.PATH_SEPARATOR));
- if (parentPath.length() == 0)
- {
- parentPath = Folder.PATH_SEPARATOR;
- }
- FolderImpl parent = null;
- try
+ // look up and set parent folder if necessary
+ if (page.getParent() == null)
{
- parent = (FolderImpl)getFolder(parentPath);
+ // access folder by path
+ String pagePath = page.getPath();
+ String parentPath = pagePath.substring(0, pagePath.lastIndexOf(Folder.PATH_SEPARATOR));
+ if (parentPath.length() == 0)
+ {
+ parentPath = Folder.PATH_SEPARATOR;
+ }
+ FolderImpl parent = null;
+ try
+ {
+ parent = (FolderImpl)getFolder(parentPath);
+ }
+ catch (FolderNotFoundException fnfe)
+ {
+ throw new PageNotUpdatedException("Missing parent folder: " + parentPath);
+ }
+
+ // update parent folder with added page
+ parent.addPage((PageImpl)page);
+ page.setParent(parent);
+ getPersistenceBrokerTemplate().store(parent);
+
+ // update document cache
+ databaseNodeCache.put(pagePath, page);
}
- catch (FolderNotFoundException fnfe)
+ else
{
- throw new PageNotUpdatedException("Missing parent folder: " + parentPath);
+ // update page
+ getPersistenceBrokerTemplate().store(page);
+
+ // update document cache
+ databaseNodeCache.put(page.getPath(), page);
}
-
- // update page and parent folder
- parent.addPage((PageImpl)page);
- page.setParent(parent);
- getPersistenceBrokerTemplate().store(parent);
- getPersistenceBrokerTemplate().store(page);
}
- else
+ catch (Exception e)
{
- // update page
- getPersistenceBrokerTemplate().store(page);
+ throw new PageNotUpdatedException("Page " + page.getPath() + " not updated.", e);
}
-
- System.out.println("**** stored page " + page.getPath());
}
/* (non-Javadoc)
* @see org.apache.jetspeed.page.PageManager#removePage(org.apache.jetspeed.om.page.Page)
*/
- public void removePage(Page page) throws JetspeedException,
- PageNotRemovedException
+ public void removePage(Page page) throws JetspeedException, PageNotRemovedException
{
- System.out.println("deleting page " + page.getPath());
-
- // look up and update parent folder if necessary
- if (page.getParent() != null)
+ try
{
- // delete page and update parent folder
- FolderImpl parent = (FolderImpl)page.getParent();
- parent.removePage((PageImpl)page);
- getPersistenceBrokerTemplate().store(parent);
- getPersistenceBrokerTemplate().delete(page);
+ // look up and update parent folder if necessary
+ if (page.getParent() != null)
+ {
+ // update parent folder with removed page; deletes page
+ FolderImpl parent = (FolderImpl)page.getParent();
+ parent.removePage((PageImpl)page);
+ getPersistenceBrokerTemplate().store(parent);
+ }
+ else
+ {
+ // delete page
+ getPersistenceBrokerTemplate().delete(page);
+ }
+
+ // delete document cache entry
+ databaseNodeCache.put(page.getPath(), null);
}
- else
+ catch (Exception e)
{
- // delete page
- getPersistenceBrokerTemplate().delete(page);
+ throw new PageNotRemovedException("Page " + page.getPath() + " not removed.", e);
}
-
- System.out.println("**** deleted page " + page.getPath());
}
/* (non-Javadoc)
* @see org.apache.jetspeed.page.PageManager#updateFolder(org.apache.jetspeed.om.folder.Folder)
*/
- public void updateFolder(Folder folder) throws JetspeedException,
- FolderNotUpdatedException
+ public void updateFolder(Folder folder) throws JetspeedException, FolderNotUpdatedException
{
- System.out.println("storing folder " + folder.getPath());
-
- // look up and set parent folder if necessary
- if ((folder.getParent() == null) && !folder.getPath().equals(Folder.PATH_SEPARATOR))
+ try
{
- // access folder by path
- String folderPath = folder.getPath();
- String parentPath = folderPath.substring(0, folderPath.lastIndexOf(Folder.PATH_SEPARATOR));
- if (parentPath.length() == 0)
+ // look up and set parent folder if necessary
+ if ((folder.getParent() == null) && !folder.isRootFolder())
{
- parentPath = Folder.PATH_SEPARATOR;
+ // access folder by path
+ String folderPath = folder.getPath();
+ String parentPath = folderPath.substring(0, folderPath.lastIndexOf(Folder.PATH_SEPARATOR));
+ if (parentPath.length() == 0)
+ {
+ parentPath = Folder.PATH_SEPARATOR;
+ }
+ FolderImpl parent = null;
+ try
+ {
+ parent = (FolderImpl)getFolder(parentPath);
+ }
+ catch (FolderNotFoundException fnfe)
+ {
+ throw new FolderNotUpdatedException("Missing parent folder: " + parentPath);
+ }
+
+ // update parent folder with added folder
+ parent.addFolder((FolderImpl)folder);
+ folder.setParent(parent);
+ getPersistenceBrokerTemplate().store(parent);
+
+ // update folder cache
+ databaseNodeCache.put(folderPath, folder);
}
- FolderImpl parent = null;
- try
+ else
{
- parent = (FolderImpl)getFolder(parentPath);
+ // update folder
+ getPersistenceBrokerTemplate().store(folder);
+
+ // update folder cache
+ databaseNodeCache.put(folder.getPath(), folder);
}
- catch (FolderNotFoundException fnfe)
- {
- throw new FolderNotUpdatedException("Missing parent folder: " + parentPath);
- }
-
- // update folder and parent folder
- parent.addFolder((FolderImpl)folder);
- folder.setParent(parent);
- getPersistenceBrokerTemplate().store(parent);
- getPersistenceBrokerTemplate().store(folder);
}
- else
+ catch (Exception e)
{
- // update folder
- getPersistenceBrokerTemplate().store(folder);
+ throw new FolderNotUpdatedException("Folder " + folder.getPath() + " not updated.", e);
}
-
- System.out.println("**** stored folder " + folder.getPath());
}
/* (non-Javadoc)
* @see org.apache.jetspeed.page.PageManager#removeFolder(org.apache.jetspeed.om.folder.Folder)
*/
- public void removeFolder(Folder folder) throws JetspeedException,
- FolderNotRemovedException
+ public void removeFolder(Folder folder) throws JetspeedException, FolderNotRemovedException
{
- System.out.println("deleting folder " + folder.getPath());
-
- // look up and update parent folder if necessary
- if (folder.getParent() != null)
+ try
{
- // delete folder and update parent folder
- FolderImpl parent = (FolderImpl)folder.getParent();
- parent.removeFolder((FolderImpl)folder);
- getPersistenceBrokerTemplate().store(parent);
- getPersistenceBrokerTemplate().delete(folder);
+ // look up and update parent folder if necessary
+ if (folder.getParent() != null)
+ {
+ // update parent folder with removed folder; deep deletes folder
+ FolderImpl parent = (FolderImpl)folder.getParent();
+ parent.removeFolder((FolderImpl)folder);
+ getPersistenceBrokerTemplate().store(parent);
+ }
+ else
+ {
+ // deep delete folder
+ getPersistenceBrokerTemplate().delete(folder);
+ }
+
+ // delete folder and document cache entries
+ String folderPath = folder.getPath();
+ Iterator cacheIter = databaseNodeCache.entrySet().iterator();
+ while (cacheIter.hasNext())
+ {
+ Map.Entry cacheEntry = (Map.Entry)cacheIter.next();
+ if (((String)cacheEntry.getKey()).startsWith(folderPath))
+ {
+ cacheEntry.setValue(null);
+ }
+ }
}
- else
+ catch (Exception e)
{
- // delete folder
- getPersistenceBrokerTemplate().delete(folder);
+ throw new FolderNotRemovedException("Folder " + folder.getPath() + " not removed.", e);
}
-
- System.out.println("**** deleted folder " + folder.getPath());
}
/* (non-Javadoc)
* @see org.apache.jetspeed.page.PageManager#updateLink(org.apache.jetspeed.om.page.Link)
*/
- public void updateLink(Link link) throws JetspeedException,
- LinkNotUpdatedException
+ public void updateLink(Link link) throws JetspeedException, LinkNotUpdatedException
{
// TODO Auto-generated method stub
@@ -414,8 +500,7 @@
/* (non-Javadoc)
* @see org.apache.jetspeed.page.PageManager#removeLink(org.apache.jetspeed.om.page.Link)
*/
- public void removeLink(Link link) throws JetspeedException,
- LinkNotRemovedException
+ public void removeLink(Link link) throws JetspeedException, LinkNotRemovedException
{
// TODO Auto-generated method stub
@@ -442,8 +527,7 @@
/* (non-Javadoc)
* @see org.apache.jetspeed.page.PageManager#clonePage(org.apache.jetspeed.om.page.Page, java.lang.String)
*/
- public Page clonePage(Page source, String path) throws JetspeedException,
- PageNotUpdatedException
+ public Page clonePage(Page source, String path) throws JetspeedException, PageNotUpdatedException
{
// TODO Auto-generated method stub
return null;
Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/psml/CastorXmlPageManager.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/psml/CastorXmlPageManager.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/psml/CastorXmlPageManager.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/psml/CastorXmlPageManager.java Tue Nov 1 14:13:18 2005
@@ -47,7 +47,6 @@
import org.apache.jetspeed.om.page.psml.FragmentImpl;
import org.apache.jetspeed.om.page.psml.LinkImpl;
import org.apache.jetspeed.om.page.psml.PageImpl;
-import org.apache.jetspeed.om.page.psml.PropertyImpl;
import org.apache.jetspeed.om.page.psml.SecurityConstraintImpl;
import org.apache.jetspeed.om.page.psml.SecurityConstraintsImpl;
import org.apache.jetspeed.page.AbstractPageManager;
@@ -73,9 +72,6 @@
{
private final static Log log = LogFactory.getLog(CastorXmlPageManager.class);
- protected final static String PROFILE_PROPERTY_FOLDER_PREFIX = "_";
- protected final static String PROFILE_NAVIGATION_PROPERTY_FOLDER_PREFIX = "__";
-
private static Map modelClasses = new HashMap();
static
{
@@ -83,7 +79,6 @@
modelClasses.put("PageImpl.class", PageImpl.class);
modelClasses.put("FolderImpl.class", FolderImpl.class);
modelClasses.put("LinkImpl.class", LinkImpl.class);
- modelClasses.put("PropertyImpl.class", PropertyImpl.class);
modelClasses.put("MenuDefinitionImpl.class", MenuDefinitionImpl.class);
modelClasses.put("MenuExcludeDefinitionImpl.class", MenuExcludeDefinitionImpl.class);
modelClasses.put("MenuIncludeDefinitionImpl.class", MenuIncludeDefinitionImpl.class);
Modified: portals/jetspeed-2/trunk/components/page-manager/src/test/database-page-manager.xml
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/test/database-page-manager.xml?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/test/database-page-manager.xml (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/test/database-page-manager.xml Tue Nov 1 14:13:18 2005
@@ -17,18 +17,18 @@
-->
<beans>
- <bean
- id="org.apache.jetspeed.page.PageManagerImpl"
- name="pageManagerImpl"
- init-method="init"
- class="org.apache.jetspeed.page.impl.DatabasePageManager">
- <constructor-arg index="0">
- <value>JETSPEED-INF/ojb/page-manager-repository.xml</value>
- </constructor-arg>
- <!-- permissions security enabled flag, default=false -->
- <constructor-arg index="1"><value>false</value></constructor-arg>
- <!-- constraints security enabled flag, default=true -->
- <constructor-arg index="2"><value>false</value></constructor-arg>
+ <bean id="org.apache.jetspeed.page.PageManagerImpl"
+ name="pageManagerImpl"
+ init-method="init"
+ class="org.apache.jetspeed.page.impl.DatabasePageManager">
+ <!-- OJB configuration file resource path -->
+ <constructor-arg index="0"><value>JETSPEED-INF/ojb/page-manager-repository.xml</value></constructor-arg>
+ <!-- folder/page/link cache size, default=128 -->
+ <constructor-arg index="1"><value>128</value></constructor-arg>
+ <!-- permissions security enabled flag, default=false -->
+ <constructor-arg index="2"><value>false</value></constructor-arg>
+ <!-- constraints security enabled flag, default=true -->
+ <constructor-arg index="3"><value>false</value></constructor-arg>
</bean>
<!-- Proxying -->
Modified: portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestCastorXmlPageManager.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestCastorXmlPageManager.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestCastorXmlPageManager.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestCastorXmlPageManager.java Tue Nov 1 14:13:18 2005
@@ -23,6 +23,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
+import java.util.Map;
import junit.framework.Test;
import junit.framework.TestCase;
@@ -47,7 +48,6 @@
import org.apache.jetspeed.om.page.Link;
import org.apache.jetspeed.om.page.Page;
import org.apache.jetspeed.om.page.PageSecurity;
-import org.apache.jetspeed.om.page.Property;
import org.apache.jetspeed.page.document.DocumentHandler;
import org.apache.jetspeed.page.document.DocumentHandlerFactory;
import org.apache.jetspeed.page.document.DocumentNotFoundException;
@@ -182,11 +182,6 @@
assertTrue(f.getType().equals(Fragment.LAYOUT));
}
- public void testNewProperty()
- {
- // TODO: Fix Property manipulation API, too clumsy right now
- }
-
public void testNewFolder()
{
Folder testfolder = pageManager.newFolder(this.testFolder3);
@@ -237,26 +232,22 @@
assertTrue(f.getName().equals("HelloPortlet"));
assertTrue(f.getType().equals(Fragment.PORTLET));
- List properties = f.getProperties(root.getName());
+ Map properties = f.getProperties();
assertNotNull(properties);
assertTrue(properties.size() == 2);
- assertTrue(((Property) properties.get(0)).getName().equals("row"));
- assertTrue(((Property) properties.get(0)).getValue().equals("0"));
- assertTrue(((Property) properties.get(1)).getName().equals("column"));
- assertTrue(((Property) properties.get(1)).getValue().equals("0"));
+ assertEquals("0", f.getProperty(Fragment.ROW_PROPERTY_NAME));
+ assertEquals(0, f.getIntProperty(Fragment.COLUMN_PROPERTY_NAME));
f = (Fragment) children.get(1);
assertTrue(f.getId().equals("pe002"));
assertTrue(f.getName().equals("JMXPortlet"));
assertTrue(f.getType().equals(Fragment.PORTLET));
- properties = f.getProperties(root.getName());
+ properties = f.getProperties();
assertNotNull(properties);
assertTrue(properties.size() == 2);
- assertTrue(((Property) properties.get(0)).getName().equals("row"));
- assertTrue(((Property) properties.get(0)).getValue().equals("0"));
- assertTrue(((Property) properties.get(1)).getName().equals("column"));
- assertTrue(((Property) properties.get(1)).getValue().equals("1"));
+ assertEquals("0", f.getProperty(Fragment.ROW_PROPERTY_NAME));
+ assertEquals(1, f.getIntProperty(Fragment.COLUMN_PROPERTY_NAME));
f = testpage.getFragmentById("f002");
assertNotNull(f);
@@ -283,16 +274,9 @@
Fragment f = pageManager.newFragment();
f.setType(Fragment.PORTLET);
f.setName("TestPortlet");
- Property p = pageManager.newProperty();
- p.setLayout("TestLayout");
- p.setName("row");
- p.setValue("0");
- f.addProperty(p);
- p = pageManager.newProperty();
- p.setLayout("TestLayout");
- p.setName("column");
- p.setValue("0");
- f.addProperty(p);
+ Map properties = f.getProperties();
+ properties.put(Fragment.ROW_PROPERTY_NAME, "0");
+ properties.put(Fragment.COLUMN_PROPERTY_NAME, "0");
root.getFragments().add(f);
SecurityConstraints constraints = pageManager.newSecurityConstraints();
@@ -332,8 +316,8 @@
assertTrue(page.getRootFragment().getFragments().size() == 1);
f = (Fragment) page.getRootFragment().getFragments().get(0);
- assertNotNull(f.getProperties("TestLayout"));
- assertTrue(((Property) f.getProperties("TestLayout").get(0)).getValue().equals("0"));
+ assertNotNull(f.getProperties());
+ assertEquals(0, f.getIntProperty(Fragment.ROW_PROPERTY_NAME));
}
public void testCreateFolder() throws Exception
@@ -896,15 +880,13 @@
assertTrue(cf.getName().equals("HelloPortlet"));
assertTrue(cf.getType().equals(Fragment.PORTLET));
- List properties = f.getProperties(root.getName());
- List cloneProperties = cf.getProperties(cloneRoot.getName());
-
+ Map properties = f.getProperties();
+ Map cloneProperties = cf.getProperties();
+
assertNotNull(cloneProperties);
assertTrue(cloneProperties.size() == 2);
- assertTrue(((Property) cloneProperties.get(0)).getName().equals("row"));
- assertTrue(((Property) cloneProperties.get(0)).getValue().equals("0"));
- assertTrue(((Property) cloneProperties.get(1)).getName().equals("column"));
- assertTrue(((Property) cloneProperties.get(1)).getValue().equals("0"));
+ assertEquals("0", cf.getProperty(Fragment.ROW_PROPERTY_NAME));
+ assertEquals(0, cf.getIntProperty(Fragment.COLUMN_PROPERTY_NAME));
cf = (Fragment) cloneChildren.get(1);
f = (Fragment) children.get(1);
@@ -913,13 +895,11 @@
assertTrue(cf.getName().equals("JMXPortlet"));
assertTrue(cf.getType().equals(Fragment.PORTLET));
- properties = cf.getProperties(root.getName());
+ properties = cf.getProperties();
assertNotNull(properties);
assertTrue(properties.size() == 2);
- assertTrue(((Property) properties.get(0)).getName().equals("row"));
- assertTrue(((Property) properties.get(0)).getValue().equals("0"));
- assertTrue(((Property) properties.get(1)).getName().equals("column"));
- assertTrue(((Property) properties.get(1)).getValue().equals("1"));
+ assertEquals("0", cf.getProperty(Fragment.ROW_PROPERTY_NAME));
+ assertEquals(1, cf.getIntProperty(Fragment.COLUMN_PROPERTY_NAME));
f = testpage.getFragmentById("f002");
cf = (Fragment) cloneChildren.get(2);
Modified: portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestDatabasePageManager.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestDatabasePageManager.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestDatabasePageManager.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestDatabasePageManager.java Tue Nov 1 14:13:18 2005
@@ -112,6 +112,7 @@
{
try
{
+ // test basic folder/page/fragment creation
Folder folder = pageManager.newFolder("/");
folder.setTitle("Root Folder");
folder.setDefaultPage("default-page.psml");
@@ -127,7 +128,7 @@
page.setDefaultDecorator("blue-gradient", Fragment.PORTLET);
page.setDefaultSkin("skin-1");
page.setShortTitle("Default");
-
+
Fragment root = page.getRootFragment();
root.setDecorator("blue-gradient");
root.setName("jetspeed-layouts::VelocityTwoColumns");
@@ -135,6 +136,8 @@
root.setTitle("Root Fragment");
root.setState("Normal");
root.setLayoutSizes("50%,50%");
+ root.getProperties().put("custom-prop1", "custom-prop-value1");
+ root.getProperties().put("custom-prop2", "custom-prop-value2");
Fragment portlet = pageManager.newPortletFragment();
portlet.setName("security::LoginPortlet");
@@ -144,34 +147,90 @@
portlet.setLayoutRow(88);
portlet.setLayoutColumn(99);
root.getFragments().add(portlet);
-
+
pageManager.updatePage(page);
assertNotNull(page.getParent());
assertEquals(page.getParent().getId(), folder.getId());
-
+
try
{
Page check = pageManager.getPage("/default-page.psml");
+ assertEquals("/default-page.psml", check.getPath());
}
catch (PageNotFoundException e)
{
- assertTrue("Page /default-page.psml NOT FOUND", true);
+ assertTrue("Page /default-page.psml NOT FOUND", false);
}
try
{
Folder checkFolder = pageManager.getFolder("/");
+ assertEquals("/", checkFolder.getPath());
}
catch (FolderNotFoundException e)
{
- assertTrue("Folder / NOT FOUND", true);
+ assertTrue("Folder / NOT FOUND", false);
}
-
+ try
+ {
+ Folder checkFolder = pageManager.newFolder("/");
+ pageManager.updateFolder(checkFolder);
+ assertTrue("Duplicate Folder / CREATED", false);
+ }
+ catch (FolderNotUpdatedException e)
+ {
+ assertTrue("Duplicate Folder / NOT CREATED", true);
+ }
+
+ pageManager.removeFolder(folder);
+
+ // test folder/page creation with attributes
+ String testAttributesPath = "/__custom/subsiteX/_user/userX/_role/roleX/_group/groupX/_mediatype/xhtml/_language/en/_country/us/_custom/customX";
+ String verifyTestAttributesPath = "/__subsite-root/subsitex/_user/userx/_role/rolex/_group/groupx/_mediatype/xhtml/_language/en/_country/us/_custom/customx";
+ folder = pageManager.newFolder(testAttributesPath);
+ pageManager.updateFolder(folder);
+ assertNull(folder.getParent());
+
+ page = pageManager.newPage(testAttributesPath + "/default-page.psml");
+ pageManager.updatePage(page);
+
+ assertNotNull(page.getParent());
+ assertEquals(page.getParent().getId(), folder.getId());
+
+ try
+ {
+ Page check = pageManager.getPage(testAttributesPath + "/default-page.psml");
+ assertEquals(verifyTestAttributesPath + "/default-page.psml", check.getPath());
+ }
+ catch (PageNotFoundException e)
+ {
+ assertTrue("Page " + testAttributesPath + "/default-page.psml NOT FOUND", false);
+ }
+ try
+ {
+ Folder checkFolder = pageManager.getFolder(testAttributesPath);
+ assertEquals(verifyTestAttributesPath, checkFolder.getPath());
+ }
+ catch (FolderNotFoundException e)
+ {
+ assertTrue("Folder " + testAttributesPath + " NOT FOUND", false);
+ }
+ try
+ {
+ Folder checkFolder = pageManager.newFolder(testAttributesPath);
+ pageManager.updateFolder(checkFolder);
+ assertTrue("Duplicate Folder " + testAttributesPath + " CREATED", false);
+ }
+ catch (FolderNotUpdatedException e)
+ {
+ assertTrue("Duplicate Folder " + testAttributesPath + " NOT CREATED", true);
+ }
+
pageManager.removeFolder(folder);
-
}
catch (Exception e)
{
+ e.printStackTrace(System.out);
fail("could not create test data: "+e);
}
}
Modified: portals/jetspeed-2/trunk/components/portal-site/src/java/org/apache/jetspeed/om/folder/proxy/FolderProxy.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/portal-site/src/java/org/apache/jetspeed/om/folder/proxy/FolderProxy.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/portal-site/src/java/org/apache/jetspeed/om/folder/proxy/FolderProxy.java (original)
+++ portals/jetspeed-2/trunk/components/portal-site/src/java/org/apache/jetspeed/om/folder/proxy/FolderProxy.java Tue Nov 1 14:13:18 2005
@@ -762,8 +762,8 @@
// accessed only via SiteView search path
// aggregation that directly utilizes the
// current view page manager
- if (!(child instanceof Folder) || (!childName.startsWith(SiteView.PROFILING_NAVIGATION_PROPERTY_FOLDER_PREFIX) &&
- !childName.startsWith(SiteView.PROFILING_PROPERTY_FOLDER_PREFIX)))
+ if (!(child instanceof Folder) || (!childName.startsWith(Folder.RESERVED_SUBSITE_FOLDER_PREFIX) &&
+ !childName.startsWith(Folder.RESERVED_FOLDER_PREFIX)))
{
// test child name uniqueness
boolean childUnique = true ;
Modified: portals/jetspeed-2/trunk/components/portal-site/src/java/org/apache/jetspeed/portalsite/view/SiteView.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/portal-site/src/java/org/apache/jetspeed/portalsite/view/SiteView.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/portal-site/src/java/org/apache/jetspeed/portalsite/view/SiteView.java (original)
+++ portals/jetspeed-2/trunk/components/portal-site/src/java/org/apache/jetspeed/portalsite/view/SiteView.java Tue Nov 1 14:13:18 2005
@@ -50,16 +50,6 @@
public class SiteView
{
/**
- * PROFILING_PROPERTY_FOLDER_PREFIX - folder name prefix for profiling folders
- */
- public final static String PROFILING_PROPERTY_FOLDER_PREFIX = "_";
-
- /**
- * PROFILING_NAVIGATION_PROPERTY_FOLDER_PREFIX - folder name prefix for profiling navigating folders
- */
- public final static String PROFILING_NAVIGATION_PROPERTY_FOLDER_PREFIX = "__";
-
- /**
* CURRENT_PAGE_PATH - expression used to match the current page
*/
public final static String CURRENT_PAGE_PATH = "~";
@@ -404,9 +394,9 @@
int folderIndex = 1;
do
{
- if (!pathRoot.regionMatches(folderIndex, PROFILING_NAVIGATION_PROPERTY_FOLDER_PREFIX, 0, PROFILING_NAVIGATION_PROPERTY_FOLDER_PREFIX.length()))
+ if (!pathRoot.regionMatches(folderIndex, Folder.RESERVED_SUBSITE_FOLDER_PREFIX, 0, Folder.RESERVED_SUBSITE_FOLDER_PREFIX.length()))
{
- pathRoot = pathRoot.substring(0, folderIndex) + PROFILING_NAVIGATION_PROPERTY_FOLDER_PREFIX + pathRoot.substring(folderIndex);
+ pathRoot = pathRoot.substring(0, folderIndex) + Folder.RESERVED_SUBSITE_FOLDER_PREFIX + pathRoot.substring(folderIndex);
}
folderIndex = pathRoot.indexOf(Folder.PATH_SEPARATOR, folderIndex) + 1;
}
@@ -475,7 +465,7 @@
while (pathsIter.hasNext())
{
StringBuffer path = (StringBuffer) pathsIter.next();
- path.append(PROFILING_PROPERTY_FOLDER_PREFIX);
+ path.append(Folder.RESERVED_FOLDER_PREFIX);
path.append(propertyName);
path.append(Folder.PATH_SEPARATOR_CHAR);
path.append(propertyValue);
Modified: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorFragmentImpl.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorFragmentImpl.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorFragmentImpl.java (original)
+++ portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorFragmentImpl.java Tue Nov 1 14:13:18 2005
@@ -16,11 +16,12 @@
package org.apache.jetspeed.aggregator.impl;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.apache.jetspeed.om.common.SecurityConstraints;
import org.apache.jetspeed.om.page.Fragment;
-import org.apache.jetspeed.om.page.Property;
/**
* PortletAggregator Fragment implementation for rendering.
@@ -219,55 +220,27 @@
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getLayoutProperties()
+ * @see org.apache.jetspeed.om.page.Fragment#getProperties()
*/
- public List getLayoutProperties()
+ public Map getProperties()
{
- return new ArrayList(0);
+ return new HashMap(0);
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getProperties(java.lang.String)
+ * @see org.apache.jetspeed.om.page.Fragment#getProperty(java.lang.String)
*/
- public List getProperties(String layoutName)
- {
- return new ArrayList(0);
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getPropertyValue(java.lang.String,java.lang.String)
- */
- public String getPropertyValue(String layout, String propName)
+ public String getProperty(String propName)
{
return null;
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getPropertyValue(java.lang.String,java.lang.String,java.lang.String)
- */
- public void setPropertyValue(String layout, String propName, String value)
- {
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#addProperty(org.apache.jetspeed.om.page.Property)
- */
- public void addProperty(Property p)
- {
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#removeProperty(org.apache.jetspeed.om.page.Property)
- */
- public void removeProperty(Property p)
- {
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#clearProperties(java.lang.String)
+ * @see org.apache.jetspeed.om.page.Fragment#getIntProperty(java.lang.String)
*/
- public void clearProperties(String layoutName)
+ public int getIntProperty(String propName)
{
+ return -1;
}
/* (non-Javadoc)
Modified: portals/jetspeed-2/trunk/etc/schema/phase2-schema.xml
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/etc/schema/phase2-schema.xml?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/etc/schema/phase2-schema.xml (original)
+++ portals/jetspeed-2/trunk/etc/schema/phase2-schema.xml Tue Nov 1 14:13:18 2005
@@ -27,6 +27,14 @@
<column name="PATH" required="true" size="160" type="VARCHAR"/>
<column name="NAME" required="true" size="80" type="VARCHAR"/>
<column name="TITLE" size="100" type="VARCHAR"/>
+ <column name="SUBSITE" required="true" size="40" type="VARCHAR"/>
+ <column name="USER_PRINCIPAL" required="true" size="40" type="VARCHAR"/>
+ <column name="ROLE_PRINCIPAL" required="true" size="40" type="VARCHAR"/>
+ <column name="GROUP_PRINCIPAL" required="true" size="40" type="VARCHAR"/>
+ <column name="MEDIATYPE" required="true" size="15" type="VARCHAR"/>
+ <column name="LOCALE" required="true" size="10" type="VARCHAR"/>
+ <column name="EXT_ATTR_NAME" required="true" size="15" type="VARCHAR"/>
+ <column name="EXT_ATTR_VALUE" required="true" size="40" type="VARCHAR"/>
<foreign-key foreignTable="FOLDER" onDelete="cascade">
<reference foreign="FOLDER_ID" local="PARENT_ID"/>
</foreign-key>
@@ -35,6 +43,14 @@
</index>
<unique name="UN_FOLDER_1">
<unique-column name="PATH"/>
+ <unique-column name="SUBSITE"/>
+ <unique-column name="USER_PRINCIPAL"/>
+ <unique-column name="ROLE_PRINCIPAL"/>
+ <unique-column name="GROUP_PRINCIPAL"/>
+ <unique-column name="MEDIATYPE"/>
+ <unique-column name="LOCALE"/>
+ <unique-column name="EXT_ATTR_NAME"/>
+ <unique-column name="EXT_ATTR_VALUE"/>
</unique>
</table>
@@ -51,13 +67,14 @@
<column name="SKIN" size="80" type="VARCHAR"/>
<column name="DECORATOR" size="80" type="VARCHAR"/>
<column name="DEFAULT_FRAGMENT_DECORATOR" size="80" type="VARCHAR"/>
- <column name="SUBSITE" size="40" type="VARCHAR"/>
- <column name="PRINCIPAL" size="40" type="VARCHAR"/>
- <column name="PRINCIPAL_TYPE" size="15" type="VARCHAR"/>
- <column name="MEDIATYPE" size="15" type="VARCHAR"/>
- <column name="LOCALE" size="10" type="VARCHAR"/>
- <column name="EXT_LOCATOR_NAME" size="15" type="VARCHAR"/>
- <column name="EXT_LOCATOR_VALUE" size="40" type="VARCHAR"/>
+ <column name="SUBSITE" required="true" size="40" type="VARCHAR"/>
+ <column name="USER_PRINCIPAL" required="true" size="40" type="VARCHAR"/>
+ <column name="ROLE_PRINCIPAL" required="true" size="40" type="VARCHAR"/>
+ <column name="GROUP_PRINCIPAL" required="true" size="40" type="VARCHAR"/>
+ <column name="MEDIATYPE" required="true" size="15" type="VARCHAR"/>
+ <column name="LOCALE" required="true" size="10" type="VARCHAR"/>
+ <column name="EXT_ATTR_NAME" required="true" size="15" type="VARCHAR"/>
+ <column name="EXT_ATTR_VALUE" required="true" size="40" type="VARCHAR"/>
<foreign-key foreignTable="FOLDER" onDelete="cascade">
<reference foreign="FOLDER_ID" local="PARENT_ID"/>
</foreign-key>
@@ -67,12 +84,13 @@
<unique name="UN_PAGE_1">
<unique-column name="PATH"/>
<unique-column name="SUBSITE"/>
- <unique-column name="PRINCIPAL"/>
- <unique-column name="PRINCIPAL_TYPE"/>
+ <unique-column name="USER_PRINCIPAL"/>
+ <unique-column name="ROLE_PRINCIPAL"/>
+ <unique-column name="GROUP_PRINCIPAL"/>
<unique-column name="MEDIATYPE"/>
<unique-column name="LOCALE"/>
- <unique-column name="EXT_LOCATOR_NAME"/>
- <unique-column name="EXT_LOCATOR_VALUE"/>
+ <unique-column name="EXT_ATTR_NAME"/>
+ <unique-column name="EXT_ATTR_VALUE"/>
</unique>
</table>
@@ -93,10 +111,10 @@
<column name="LAYOUT_ROW" type="INTEGER"/>
<column name="LAYOUT_COLUMN" type="INTEGER"/>
<column name="LAYOUT_SIZES" size="20" type="VARCHAR"/>
- <column name="EXT_PROPERTY_NAME_1" size="40" type="VARCHAR"/>
- <column name="EXT_PROPERTY_VALUE_1" size="80" type="VARCHAR"/>
- <column name="EXT_PROPERTY_NAME_2" size="40" type="VARCHAR"/>
- <column name="EXT_PROPERTY_VALUE_2" size="80" type="VARCHAR"/>
+ <column name="EXT_PROP_NAME_1" size="40" type="VARCHAR"/>
+ <column name="EXT_PROP_VALUE_1" size="80" type="VARCHAR"/>
+ <column name="EXT_PROP_NAME_2" size="40" type="VARCHAR"/>
+ <column name="EXT_PROP_VALUE_2" size="80" type="VARCHAR"/>
<foreign-key foreignTable="FRAGMENT" onDelete="cascade">
<reference foreign="FRAGMENT_ID" local="PARENT_ID"/>
</foreign-key>
Modified: portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/folder/Folder.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/folder/Folder.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/folder/Folder.java (original)
+++ portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/folder/Folder.java Tue Nov 1 14:13:18 2005
@@ -40,11 +40,46 @@
String FALLBACK_DEFAULT_PAGE = "default-page.psml";
String PAGE_NOT_FOUND_PAGE = "page_not_found.psml";
- String USER_FOLDER = "/_user/";
- String ROLE_FOLDER = "/_role/";
- String GROUP_FOLDER = "/_group/";
+
+ String RESERVED_SUBSITE_FOLDER_PREFIX = "__";
+ String RESERVED_SUBSITE_FOLDER_NAME = RESERVED_SUBSITE_FOLDER_PREFIX + "subsite-root";
+ String RESERVED_FOLDER_PREFIX = "_";
+ String RESERVED_USER_FOLDER_NAME = RESERVED_FOLDER_PREFIX + "user";
+ String RESERVED_ROLE_FOLDER_NAME = RESERVED_FOLDER_PREFIX + "role";
+ String RESERVED_GROUP_FOLDER_NAME = RESERVED_FOLDER_PREFIX + "group";
+ String RESERVED_MEDIATYPE_FOLDER_NAME = RESERVED_FOLDER_PREFIX + "mediatype";
+ String RESERVED_LANGUAGE_FOLDER_NAME = RESERVED_FOLDER_PREFIX + "language";
+ String RESERVED_COUNTRY_FOLDER_NAME = RESERVED_FOLDER_PREFIX + "country";
+
+ String SUBSITE_FOLDER = PATH_SEPARATOR + RESERVED_SUBSITE_FOLDER_NAME + PATH_SEPARATOR;
+ String USER_FOLDER = PATH_SEPARATOR + RESERVED_USER_FOLDER_NAME + PATH_SEPARATOR;
+ String ROLE_FOLDER = PATH_SEPARATOR + RESERVED_ROLE_FOLDER_NAME + PATH_SEPARATOR;
+ String GROUP_FOLDER = PATH_SEPARATOR + RESERVED_GROUP_FOLDER_NAME + PATH_SEPARATOR;
+ String MEDIATYPE_FOLDER = PATH_SEPARATOR + RESERVED_MEDIATYPE_FOLDER_NAME + PATH_SEPARATOR;
+ String LANGUAGE_FOLDER = PATH_SEPARATOR + RESERVED_LANGUAGE_FOLDER_NAME + PATH_SEPARATOR;
+ String COUNTRY_FOLDER = PATH_SEPARATOR + RESERVED_COUNTRY_FOLDER_NAME + PATH_SEPARATOR;
+
+ int RESERVED_FOLDER_NONE = 0;
+ int RESERVED_FOLDER_SUBSITES = 1;
+ int RESERVED_FOLDER_USERS = 2;
+ int RESERVED_FOLDER_ROLES = 3;
+ int RESERVED_FOLDER_GROUPS = 4;
+ int RESERVED_FOLDER_MEDIATYPE = 5;
+ int RESERVED_FOLDER_LANGUAGE = 6;
+ int RESERVED_FOLDER_COUNTRY = 7;
+ int RESERVED_FOLDER_OTHER = 9999;
/**
+ * isRootFolder
+ *
+ * Tests whether this folder's path is a root folder based on the
+ * rules associated with the folder implementation;
+ *
+ * @return flag indicating whether folder path is a root path
+ */
+ boolean isRootFolder();
+
+ /**
*
* <p>
* getDefaultPage
@@ -235,15 +270,4 @@
* @return one of the valid reserved folder types
*/
int getReservedType();
-
- int RESERVED_FOLDER_NONE = 0;
- int RESERVED_FOLDER_SUBSITES = 1;
- int RESERVED_FOLDER_USERS = 2;
- int RESERVED_FOLDER_ROLES = 3;
- int RESERVED_FOLDER_GROUPS = 4;
- int RESERVED_FOLDER_MEDIATYPE = 5;
- int RESERVED_FOLDER_LANGUAGE = 6;
- int RESERVED_FOLDER_COUNTRY = 7;
- int RESERVED_FOLDER_OTHER = 9999;
-
}
Modified: portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/Fragment.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/Fragment.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/Fragment.java (original)
+++ portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/Fragment.java Tue Nov 1 14:13:18 2005
@@ -17,6 +17,7 @@
package org.apache.jetspeed.om.page;
import java.util.List;
+import java.util.Map;
/**
* <p>A <code>Fragment</code> is the basic element handled by the aggregation
@@ -37,8 +38,7 @@
* the fragment also stores contextual information used for rendering:</p>
* <p>Finally the fragment also holds layout and rendering properties that
* may be used by a parent fragment to layout all its inner fragments in
- * an appropriate fashion. These properties are always defined for a
- * specific named component.</p>
+ * an appropriate fashion.</p>
*
* @version $Id$
*/
@@ -152,67 +152,33 @@
public List getFragments();
/**
- * Returns all layout names for which properties have
- * been defined.
+ * getProperty
*
- * @return a list of layout names Strings
- */
- public List getLayoutProperties();
-
- /**
- * Returns a list of all properties defined
- * for the layoutName specified. You can update the properties
- * but not add or remove them
+ * Get named property value.
*
- * @return an immutable List of Property objects
+ * @param propName property name
+ * @return value
*/
- public List getProperties(String layoutName);
+ public String getProperty(String propName);
/**
- *
- * <p>
- * getPropertyValue
- * </p>
- *
- * @param layout
- * @param propName
- * @return
- */
- public String getPropertyValue(String layout, String propName);
-
- /**
- *
- * <p>
- * setPropertyValue
- * </p>
+ * getIntProperty
*
- * @param layout
- * @param propName
- * @param value
- */
- public void setPropertyValue(String layout, String propName, String value);
-
- /**
- * Adds a new property to this fragment
+ * Get named property value as integer.
*
- * @param p the new Property to add
+ * @param propName property name
+ * @return int value
*/
- public void addProperty(Property p);
-
+ public int getIntProperty(String propName);
+
/**
- * Removes a new property from this fragment
+ * getProperties
*
- * @param p the Property to remove
- */
- public void removeProperty(Property p);
-
- /**
- * Clear all the properties for a specific layout,
- * if layoutName is null, clear all properties.
+ * Get writable Map of properties by name.
*
- * @param layoutName the layout for which to remove the properties
+ * @return properties map
*/
- public void clearProperties(String layoutName);
+ public Map getProperties();
/**
* get layout row property
@@ -222,6 +188,13 @@
public int getLayoutRow();
/**
+ * set the layout row property
+ *
+ * @param row
+ */
+ public void setLayoutRow(int row);
+
+ /**
* get layout column property
*
* @return column layout property
@@ -236,12 +209,12 @@
public void setLayoutColumn(int column);
/**
- * set the layout row property
- *
- * @param row
- */
- public void setLayoutRow(int row);
-
+ * get layout sizes property, (i.e. "25%,75%")
+ *
+ * @return sizes layout property
+ **/
+ public String getLayoutSizes();
+
/**
* set the layout sizes
*
@@ -249,13 +222,6 @@
*/
public void setLayoutSizes(String sizes);
- /**
- * get layout sizes property, (i.e. "25%,75%")
- *
- * @return sizes layout property
- **/
- public String getLayoutSizes();
-
/**
* Test if this fragment is actually a reference to an external fragment.
*
Modified: portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/page/PageManager.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/page/PageManager.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/page/PageManager.java (original)
+++ portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/page/PageManager.java Tue Nov 1 14:13:18 2005
@@ -32,7 +32,6 @@
import org.apache.jetspeed.om.page.Link;
import org.apache.jetspeed.om.page.Page;
import org.apache.jetspeed.om.page.PageSecurity;
-import org.apache.jetspeed.om.page.Property;
import org.apache.jetspeed.page.document.DocumentException;
import org.apache.jetspeed.page.document.DocumentNotFoundException;
import org.apache.jetspeed.page.document.NodeException;
@@ -102,13 +101,6 @@
*/
public Fragment newPortletFragment();
- /**
- * Creates a new empty Property instance
- *
- * @return a newly created Property object
- */
- public Property newProperty();
-
/**
* newMenuDefinition - creates a new empty menu definition
*
Modified: portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/ColumnLayout.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/ColumnLayout.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/ColumnLayout.java (original)
+++ portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/ColumnLayout.java Tue Nov 1 14:13:18 2005
@@ -730,8 +730,7 @@
*/
protected final int getRow(int currentColumn, Fragment fragment)
{
- String propertyValue = fragment.getPropertyValue(layoutType, Fragment.ROW_PROPERTY_NAME);
-
+ String propertyValue = fragment.getProperty(Fragment.ROW_PROPERTY_NAME);
if (propertyValue != null)
{
return Integer.parseInt(propertyValue);
@@ -757,7 +756,7 @@
*/
protected final int getColumn(Fragment fragment)
{
- String propertyValue = fragment.getPropertyValue(layoutType, Fragment.COLUMN_PROPERTY_NAME);
+ String propertyValue = fragment.getProperty(Fragment.COLUMN_PROPERTY_NAME);
if (propertyValue != null)
{
int columnNumber = Integer.parseInt(propertyValue);
Modified: portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java (original)
+++ portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java Tue Nov 1 14:13:18 2005
@@ -109,7 +109,7 @@
List columnSizes = this.columnSizes;
// Determine custom column sizes in the psml
- String customSizes = f.getPropertyValue(this.layoutType, Fragment.SIZES_PROPERTY_NAME);
+ String customSizes = f.getProperty(Fragment.SIZES_PROPERTY_NAME);
if ( customSizes != null && customSizes.trim().length() > 0 )
{
columnSizes = getCellSizes(customSizes);
Modified: portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/PageManagerLayoutEventListener.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/PageManagerLayoutEventListener.java?rev=330134&r1=330133&r2=330134&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/PageManagerLayoutEventListener.java (original)
+++ portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/PageManagerLayoutEventListener.java Tue Nov 1 14:13:18 2005
@@ -32,8 +32,8 @@
{
Fragment fragment = event.getFragment();
LayoutCoordinate coordinate = event.getNewCoordinate();
- fragment.setPropertyValue(layoutType, "column", String.valueOf(coordinate.getX()));
- fragment.setPropertyValue(layoutType, "row", String.valueOf(coordinate.getY()));
+ fragment.getProperties().put(Fragment.COLUMN_PROPERTY_NAME, String.valueOf(coordinate.getX()));
+ fragment.getProperties().put(Fragment.ROW_PROPERTY_NAME, String.valueOf(coordinate.getY()));
pageManager.updatePage(page);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org