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 we...@apache.org on 2004/07/16 00:52:38 UTC
cvs commit: jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/om/common SecuredResource.java
weaver 2004/07/15 15:52:38
Modified: components/page-manager/src/java/org/apache/jetspeed/om/page/psml
AbstractBaseElement.java PageImpl.java
jetspeed-api/src/java/org/apache/jetspeed/om/page Page.java
components/page-manager/src/java/org/apache/jetspeed/page/impl
CastorXmlPageManager.java
components/page-manager/src/java/org/apache/jetspeed/om/folder/impl
FolderImpl.java
jetspeed-api/src/java/org/apache/jetspeed/om/folder
Folder.java
components/page-manager/src/test/org/apache/jetspeed/page
TestCastorXmlPageManager.java
Added: jetspeed-api/src/java/org/apache/jetspeed/om/page
PageSet.java
components/page-manager/src/java/org/apache/jetspeed/page/impl
PageSetImpl.java
components/page-manager/src/java/org/apache/jetspeed/om/folder/impl
FolderSetImpl.java
jetspeed-api/src/java/org/apache/jetspeed/om/folder
ChildNode.java FolderSet.java
jetspeed-api/src/java/org/apache/jetspeed/om/common
SecuredResource.java
Log:
Expanded the Folder/Page functionallity.
Revision Changes Path
1.3 +4 -2 jakarta-jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/AbstractBaseElement.java
Index: AbstractBaseElement.java
===================================================================
RCS file: /home/cvs/jakarta-jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/AbstractBaseElement.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AbstractBaseElement.java 28 May 2004 22:05:08 -0000 1.2
+++ AbstractBaseElement.java 15 Jul 2004 22:52:37 -0000 1.3
@@ -16,12 +16,14 @@
package org.apache.jetspeed.om.page.psml;
+import org.apache.jetspeed.om.common.SecuredResource;
+
/**
*
* @version $Id$
*/
-public abstract class AbstractBaseElement implements java.io.Serializable
+public abstract class AbstractBaseElement implements java.io.Serializable, SecuredResource
{
private String id = null;
1.3 +145 -58 jakarta-jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/PageImpl.java
Index: PageImpl.java
===================================================================
RCS file: /home/cvs/jakarta-jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/PageImpl.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- PageImpl.java 28 May 2004 22:05:08 -0000 1.2
+++ PageImpl.java 15 Jul 2004 22:52:37 -0000 1.3
@@ -16,14 +16,15 @@
package org.apache.jetspeed.om.page.psml;
-import org.apache.jetspeed.om.common.GenericMetadata;
-import org.apache.jetspeed.om.page.Page;
-import org.apache.jetspeed.om.page.Fragment;
-
import java.util.ArrayList;
import java.util.Collection;
-import java.util.Stack;
import java.util.Iterator;
+import java.util.Stack;
+
+import org.apache.jetspeed.om.common.GenericMetadata;
+import org.apache.jetspeed.om.folder.Folder;
+import org.apache.jetspeed.om.page.Fragment;
+import org.apache.jetspeed.om.page.Page;
/**
* @version $Id$
@@ -33,32 +34,113 @@
private Defaults defaults = new Defaults();
private Fragment root = null;
-
+
private Collection metadataFields = null;
+ private int hashCode;
+
+ private Folder parent;
+
public PageImpl()
{
// empty constructor
}
+ /**
+ * <p>
+ * setId
+ * </p>
+ *
+ * @see org.apache.jetspeed.om.page.psml.AbstractBaseElement#setId(java.lang.String)
+ * @param id
+ */
+ public void setId( String id )
+ {
+ // Cheaper to generate the hash code now then every call to hashCode()
+ hashCode = (Page.class.getName()+":"+id).hashCode();
+ super.setId(id);
+ }
+ /**
+ * <p>
+ * getParent
+ * </p>
+ *
+ * @see org.apache.jetspeed.om.folder.ChildNode#getParent()
+ * @return
+ */
+ public Folder getParent()
+ {
+ return parent;
+ }
+
+ /**
+ * <p>
+ * setParent
+ * </p>
+ *
+ * @see org.apache.jetspeed.om.folder.ChildNode#setParent(org.apache.jetspeed.om.folder.Folder)
+ * @param parent
+ */
+ public void setParent( Folder parent )
+ {
+ this.parent = parent;
+ }
+
+ /**
+ * <p>
+ * equals
+ * </p>
+ *
+ * @see java.lang.Object#equals(java.lang.Object)
+ * @param obj
+ * @return
+ */
+ public boolean equals( Object obj )
+ {
+ if (obj instanceof Page)
+ {
+ Page page = (Page) obj;
+ return page != null && page.getId() != null &&
+ this.getId() != null && this.getId().equals(page.getId());
+ }
+ else
+ {
+ return false;
+ }
+
+ }
+
+ /**
+ * <p>
+ * hashCode
+ * </p>
+ *
+ * @see java.lang.Object#hashCode()
+ * @return
+ */
+ public int hashCode()
+ {
+ return hashCode;
+ }
+
public String getDefaultSkin()
{
return this.defaults.getSkin();
}
- public void setDefaultSkin(String skinName)
+ public void setDefaultSkin( String skinName )
{
this.defaults.setSkin(skinName);
}
- public String getDefaultDecorator(String fragmentType)
+ public String getDefaultDecorator( String fragmentType )
{
return this.defaults.getDecorator(fragmentType);
}
- public void setDefaultDecorator(String decoratorName, String fragmentType)
+ public void setDefaultDecorator( String decoratorName, String fragmentType )
{
- this.defaults.setDecorator(decoratorName,fragmentType);
+ this.defaults.setDecorator(decoratorName, fragmentType);
}
public Fragment getRootFragment()
@@ -66,33 +148,33 @@
return this.root;
}
- public void setRootFragment(Fragment root)
+ public void setRootFragment( Fragment root )
{
- this.root=root;
+ this.root = root;
}
- public Fragment getFragmentById(String id)
+ public Fragment getFragmentById( String id )
{
Stack stack = new Stack();
- if (getRootFragment()!=null)
+ if (getRootFragment() != null)
{
stack.push(getRootFragment());
}
- Fragment f = (Fragment)stack.pop();
+ Fragment f = (Fragment) stack.pop();
- while ((f!=null)&&(!(f.getId().equals(id))))
+ while ((f != null) && (!(f.getId().equals(id))))
{
Iterator i = f.getFragments().iterator();
- while(i.hasNext())
+ while (i.hasNext())
{
stack.push(i.next());
}
- if (stack.size()>0)
+ if (stack.size() > 0)
{
- f = (Fragment)stack.pop();
+ f = (Fragment) stack.pop();
}
else
{
@@ -108,13 +190,12 @@
return this.defaults;
}
- public void setDefaults(Defaults defaults)
+ public void setDefaults( Defaults defaults )
{
this.defaults = defaults;
}
- public Object clone()
- throws java.lang.CloneNotSupportedException
+ public Object clone() throws java.lang.CloneNotSupportedException
{
Object cloned = super.clone();
@@ -123,45 +204,51 @@
return cloned;
}
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Page#getMetadata()
- */
- public GenericMetadata getMetadata()
- {
- if(metadataFields == null)
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.jetspeed.om.page.Page#getMetadata()
+ */
+ public GenericMetadata getMetadata()
+ {
+ if (metadataFields == null)
{
metadataFields = new ArrayList();
}
-
- GenericMetadata metadata = new PageMetadataImpl();
- metadata.setFields(metadataFields);
- return metadata;
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Page#setMetadata(org.apache.jetspeed.om.common.GenericMetadata)
- */
- public void setMetadata(GenericMetadata metadata)
- {
+
+ GenericMetadata metadata = new PageMetadataImpl();
+ metadata.setFields(metadataFields);
+ return metadata;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.jetspeed.om.page.Page#setMetadata(org.apache.jetspeed.om.common.GenericMetadata)
+ */
+ public void setMetadata( GenericMetadata metadata )
+ {
this.metadataFields = metadata.getFields();
- }
+ }
- /**
- * This should only be used during castor marshalling
- * @see org.apache.jetspeed.om.page.Page#getMetadataFields()
- */
- public Collection getMetadataFields()
- {
- return metadataFields;
- }
-
- /**
- * This should only be used during castor unmarshalling
- * @see org.apache.jetspeed.om.page.Page#setMetadataFields(java.util.Collection)
- */
- public void setMetadataFields(Collection metadataFields)
- {
- this.metadataFields = metadataFields;
- }
+ /**
+ * This should only be used during castor marshalling
+ *
+ * @see org.apache.jetspeed.om.page.Page#getMetadataFields()
+ */
+ public Collection getMetadataFields()
+ {
+ return metadataFields;
+ }
+
+ /**
+ * This should only be used during castor unmarshalling
+ *
+ * @see org.apache.jetspeed.om.page.Page#setMetadataFields(java.util.Collection)
+ */
+ public void setMetadataFields( Collection metadataFields )
+ {
+ this.metadataFields = metadataFields;
+ }
}
1.2 +3 -2 jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/om/page/Page.java
Index: Page.java
===================================================================
RCS file: /home/cvs/jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/om/page/Page.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Page.java 28 May 2004 18:51:56 -0000 1.1
+++ Page.java 15 Jul 2004 22:52:37 -0000 1.2
@@ -16,6 +16,7 @@
package org.apache.jetspeed.om.page;
import org.apache.jetspeed.om.common.GenericMetadata;
+import org.apache.jetspeed.om.folder.ChildNode;
/**
* This interface represents a complete page document used by Jetspeed
@@ -23,7 +24,7 @@
*
* @version $Id$
*/
-public interface Page extends BaseElement, java.io.Serializable, Cloneable
+public interface Page extends BaseElement, java.io.Serializable, Cloneable, ChildNode
{
public GenericMetadata getMetadata();
1.1 jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/om/page/PageSet.java
Index: PageSet.java
===================================================================
/*
* Copyright 2000-2001,2004 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.om.page;
import java.util.Iterator;
/**
* <p>
* PageCollection
* </p>
* <p>
*
* </p>
* @author <a href="mailto:weaver@apache.org">Scott T. Weaver</a>
* @version $Id: PageSet.java,v 1.1 2004/07/15 22:52:37 weaver Exp $
*
*/
public interface PageSet
{
/**
* <p>
* getPage
* </p>
* Returns a Page based on <code>name</code>. <code>name</code>
* can either be the fully quallified path, <code>folder1/folder2/myPage.psml</code>
* or the page name relative the <code>Folder</code> that this PageSet
* was generated for.
*
* @param name
* @return
*/
Page get(String name);
void add(Page page);
Iterator iterator();
int size();
}
1.4 +27 -19 jakarta-jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/page/impl/CastorXmlPageManager.java
Index: CastorXmlPageManager.java
===================================================================
RCS file: /home/cvs/jakarta-jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/page/impl/CastorXmlPageManager.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- CastorXmlPageManager.java 14 Jul 2004 21:09:12 -0000 1.3
+++ CastorXmlPageManager.java 15 Jul 2004 22:52:37 -0000 1.4
@@ -185,7 +185,16 @@
if (page == null)
{
- File f = new File(this.rootDir, id + this.ext);
+ File f = null;
+ if(id.endsWith(this.ext))
+ {
+ f = new File(this.rootDir, id );
+ }
+ else
+ {
+ f = new File(this.rootDir, id + this.ext);
+ }
+
if (!f.exists())
{
return null;
@@ -197,7 +206,9 @@
{
reader = new FileReader(f);
Unmarshaller unmarshaller = new Unmarshaller(this.mapping);
- page = (Page) unmarshaller.unmarshal(reader);
+ page = (Page) unmarshaller.unmarshal(reader);
+ page.setId(id);
+
}
catch (IOException e)
{
@@ -236,6 +247,15 @@
try
{
pages.put(id, page);
+ int lastSlash = id.indexOf("/");
+ if(lastSlash > -1)
+ {
+ page.setParent(getFolder(id.substring(0, lastSlash)));
+ }
+ else
+ {
+ page.setParent(getFolder("/"));
+ }
}
catch (java.io.IOException e)
{
@@ -256,26 +276,14 @@
}
else
{
- Folder folder = new FolderImpl();
- folder.setName(folderPath);
- File[] children = f.listFiles();
- for(int i=0; i < children.length; i++)
- {
- if(children[i].isDirectory())
- {
- folder.getFolders().add(getFolder(folderPath+"/"+children[i].getName()));
- }
- else
- {
- folder.getPages().add(getPage(folderPath+"/"+children[i].getName()));
- }
- }
-
+ FolderImpl folder = new FolderImpl(f, folderPath, this);
return folder;
}
-
}
+
+
+
/**
* @see org.apache.jetspeed.services.page.PageManagerService#listPages()
*/
1.1 jakarta-jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/page/impl/PageSetImpl.java
Index: PageSetImpl.java
===================================================================
/*
* Created on Jul 15, 2004
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
package org.apache.jetspeed.page.impl;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
import org.apache.jetspeed.om.folder.Folder;
import org.apache.jetspeed.om.page.Page;
import org.apache.jetspeed.om.page.PageSet;
/**
* <p>
* PageSetImpl
* </p>
* <p>
*
* </p>
* @author <a href="mailto:weaver@apache.org">Scott T. Weaver</a>
* @version $Id: PageSetImpl.java,v 1.1 2004/07/15 22:52:37 weaver Exp $
*
*/
public class PageSetImpl implements PageSet
{
private Map pages = new TreeMap();
private Folder forFolder;
public PageSetImpl(Folder forFolder)
{
this.forFolder = forFolder;
}
/**
*
* <p>
* get
* </p>
*
* @see org.apache.jetspeed.om.page.PageSet#get(java.lang.String)
* @param name
* @return
*/
public Page get( String name )
{
if(!name.startsWith(forFolder.getName()))
{
name = forFolder.getName()+"/"+name;
}
return (Page) pages.get(name);
}
/**
* <p>
* addPage
* </p>
*
* @see org.apache.jetspeed.om.page.PageSet#addPage()
*
*/
public void add(Page page)
{
page.setParent(forFolder);
pages.put(page.getId(), page);
}
/**
* <p>
* size
* </p>
*
* @see org.apache.jetspeed.om.page.PageSet#size()
* @return
*/
public int size()
{
return pages.size();
}
/**
* <p>
* iterator
* </p>
*
* @see org.apache.jetspeed.om.page.PageSet#iterator()
* @return
*/
public Iterator iterator()
{
return pages.values().iterator();
}
}
1.4 +154 -61 jakarta-jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderImpl.java
Index: FolderImpl.java
===================================================================
RCS file: /home/cvs/jakarta-jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderImpl.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- FolderImpl.java 14 Jul 2004 21:09:12 -0000 1.3
+++ FolderImpl.java 15 Jul 2004 22:52:37 -0000 1.4
@@ -15,31 +15,83 @@
*/
package org.apache.jetspeed.om.folder.impl;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.TreeSet;
+import java.io.File;
import org.apache.jetspeed.om.folder.Folder;
+import org.apache.jetspeed.om.folder.FolderSet;
+import org.apache.jetspeed.om.page.Page;
+import org.apache.jetspeed.om.page.PageSet;
+import org.apache.jetspeed.page.PageManager;
+import org.apache.jetspeed.page.impl.PageSetImpl;
/**
* FolderImpl
- *
- * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
- * @author <a href="mailto:jford@apache.org">Jeremy Ford</a>
+ *
+ * @author <a href="mailto:taylor@apache.org">David Sean Taylor </a>
+ * @author <a href="mailto:jford@apache.org">Jeremy Ford </a>
* @version $Id$
*/
-public class FolderImpl implements Folder {
-
+public class FolderImpl implements Folder
+{
+
private int id;
private String name;
private String defaultPage;
private String defaultTheme;
- private Collection folders=new HashSet();
- private Collection pages=new TreeSet(new FolderComparator());
+ private FolderSet folders;
+ private PageSet pages;
+ private String acl;
+ private Folder parent;
+ private File directory;
+ private PageManager pageManager;
+
//private GenericMetadata metadata;
- /* (non-Javadoc)
+ public FolderImpl( File directory, String name, PageManager pageManager )
+ {
+
+ this.directory = directory;
+ this.name = name;
+ this.pageManager = pageManager;
+ }
+
+ /**
+ * @return Returns the directory.
+ */
+ public File getDirectory()
+ {
+ return directory;
+ }
+
+ /**
+ * @return Returns the parent.
+ */
+ public Folder getParent()
+ {
+ if(parent == null)
+ {
+ int lastSlash = name.lastIndexOf('/');
+ if(lastSlash != -1)
+ {
+ parent = pageManager.getFolder(name.substring(0, lastSlash));
+ }
+ }
+
+ return parent;
+ }
+
+ /**
+ * @param parent
+ * The parent to set.
+ */
+ public void setParent( Folder parent )
+ {
+ this.parent = parent;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.om.folder.Folder#getName()
*/
public String getName()
@@ -47,15 +99,36 @@
return name;
}
- /* (non-Javadoc)
+ /**
+ * @return Returns the acl.
+ */
+ public String getAcl()
+ {
+ return acl;
+ }
+
+ /**
+ * @param acl
+ * The acl to set.
+ */
+ public void setAcl( String acl )
+ {
+ this.acl = acl;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.om.folder.Folder#setName(java.lang.String)
*/
- public void setName(String name)
+ public void setName( String name )
{
this.name = name;
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.om.folder.Folder#getDefaultPage()
*/
public String getDefaultPage()
@@ -63,88 +136,108 @@
return defaultPage;
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.om.folder.Folder#setDefaultPage()
*/
- public void setDefaultPage(String defaultPage)
+ public void setDefaultPage( String defaultPage )
{
this.defaultPage = defaultPage;
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.om.folder.Folder#getDefaultTheme()
*/
- public String getDefaultTheme() {
+ public String getDefaultTheme()
+ {
return defaultTheme;
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.om.folder.Folder#setDefaultTheme()
*/
- public void setDefaultTheme(String defaultTheme)
+ public void setDefaultTheme( String defaultTheme )
{
this.defaultTheme = defaultTheme;
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.om.folder.Folder#getFolders()
*/
- public Collection getFolders()
+ public FolderSet getFolders()
{
+ if (folders == null)
+ {
+ folders = new FolderSetImpl(this);
+ File[] children = getDirectory().listFiles();
+ for (int i = 0; i < children.length; i++)
+ {
+ if (children[i].isDirectory())
+ {
+ String folderName = name + "/" + children[i].getName();
+
+ folders.add(pageManager.getFolder(folderName));
+ }
+ }
+ }
+
return folders;
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.om.folder.Folder#setFolders(java.util.Collection)
*/
- public void setFolders(Collection folders)
+ public void setFolders( FolderSet folders )
{
- this.folders = folders;
+ this.folders = folders;
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.om.folder.Folder#getPages()
*/
- public Collection getPages()
+ public PageSet getPages()
{
+ if (pages == null)
+ {
+ pages = new PageSetImpl(this);
+ File[] children = getDirectory().listFiles();
+ for (int i = 0; i < children.length; i++)
+ {
+ if (children[i].isFile())
+ {
+ pages.add(pageManager.getPage(name + "/" + children[i].getName()));
+ }
+
+ }
+ }
+
return pages;
}
+
+ public Page getPage(String name)
+ {
+ return pages.get(name);
+ }
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.apache.jetspeed.om.folder.Folder#setPages(java.util.Collection)
*/
- public void setPages(Collection pages)
+ public void setPages( PageSet pages )
{
this.pages = pages;
}
-
- class FolderComparator implements Comparator
- {
-
- /**
- * <p>
- * compare
- * </p>
- *
- * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
- * @param o1
- * @param o2
- * @return
- */
- public int compare( Object o1, Object o2 )
- {
- if(o1 != null || o2 != null)
- {
- Folder f1 = (Folder) o1;
- Folder f2 = (Folder) o2;
- return f1.getName().compareTo(f2.getName());
- }
- else
- {
- return 1;
- }
- }
-
- }
-}
+}
\ No newline at end of file
1.1 jakarta-jetspeed-2/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderSetImpl.java
Index: FolderSetImpl.java
===================================================================
/*
* Copyright 2000-2001,2004 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.om.folder.impl;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
import org.apache.jetspeed.om.folder.Folder;
import org.apache.jetspeed.om.folder.FolderSet;
/**
* <p>
* FolderSetImpl
* </p>
* <p>
*
* </p>
* @author <a href="mailto:weaver@apache.org">Scott T. Weaver</a>
* @version $Id: FolderSetImpl.java,v 1.1 2004/07/15 22:52:37 weaver Exp $
*
*/
public class FolderSetImpl implements FolderSet
{
private Map folders = new TreeMap();
private Folder forFolder;
public FolderSetImpl(Folder forFolder)
{
this.forFolder = forFolder;
}
/**
* <p>
* get
* </p>
*
* @see org.apache.jetspeed.om.folder.FolderSet#get(java.lang.String)
* @param folderName
* @return
*/
public Folder get( String folderName )
{
if(!folderName.startsWith(forFolder.getName()))
{
folderName = forFolder.getName()+"/"+folderName;
}
return (Folder) folders.get(folderName);
}
/**
* <p>
* add
* </p>
*
* @see org.apache.jetspeed.om.folder.FolderSet#add(org.apache.jetspeed.om.folder.Folder)
* @param folder
*/
public void add( Folder folder )
{
folder.setParent(forFolder);
folders.put(folder.getName(), folder);
}
/**
* <p>
* iterator
* </p>
*
* @see org.apache.jetspeed.om.folder.FolderSet#iterator()
* @return
*/
public Iterator iterator()
{
return folders.values().iterator();
}
/**
* <p>
* size
* </p>
*
* @see org.apache.jetspeed.om.folder.FolderSet#size()
* @return
*/
public int size()
{
return folders.size();
}
}
1.2 +11 -7 jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/om/folder/Folder.java
Index: Folder.java
===================================================================
RCS file: /home/cvs/jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/om/folder/Folder.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Folder.java 28 May 2004 18:51:56 -0000 1.1
+++ Folder.java 15 Jul 2004 22:52:37 -0000 1.2
@@ -15,7 +15,9 @@
*/
package org.apache.jetspeed.om.folder;
-import java.util.Collection;
+import org.apache.jetspeed.om.common.SecuredResource;
+import org.apache.jetspeed.om.page.Page;
+import org.apache.jetspeed.om.page.PageSet;
/**
* Folder
@@ -24,7 +26,7 @@
* @author <a href="mailto:jford@apache.org">Jeremy Ford</a>
* @version $Id$
*/
-public interface Folder
+public interface Folder extends SecuredResource, ChildNode
{
/**
* Gets the unique name of this desktop
@@ -48,14 +50,16 @@
void setDefaultTheme(String defaultTheme);
- Collection getFolders();
+ FolderSet getFolders();
- void setFolders(Collection folders);
+ void setFolders(FolderSet folders);
- Collection getPages();
+ PageSet getPages();
- void setPages(Collection pages);
+ void setPages(PageSet pages);
//GenericMetadata getMetadata();
//void setMetadata(GenericMetadata metadata);
+
+ Page getPage(String name);
}
1.1 jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/om/folder/ChildNode.java
Index: ChildNode.java
===================================================================
/*
* Copyright 2000-2001,2004 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.om.folder;
/**
* <p>
* ChildNode
* </p>
* <p>
*
* </p>
* @author <a href="mailto:weaver@apache.org">Scott T. Weaver</a>
* @version $Id: ChildNode.java,v 1.1 2004/07/15 22:52:37 weaver Exp $
*
*/
public interface ChildNode
{
/**
*
* <p>
* getParent
* </p>
*
* @return The parent folder for this node or <code>null</code> if this
* node is the root folder of a system.
*/
Folder getParent();
void setParent(Folder parent);
}
1.1 jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/om/folder/FolderSet.java
Index: FolderSet.java
===================================================================
/*
* Copyright 2000-2001,2004 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.om.folder;
import java.util.Iterator;
/**
* <p>
* FolderSet
* </p>
* <p>
*
* </p>
* @author <a href="mailto:weaver@apache.org">Scott T. Weaver</a>
* @version $Id: FolderSet.java,v 1.1 2004/07/15 22:52:37 weaver Exp $
*
*/
public interface FolderSet
{
/**
*
* <p>
* get
* </p>
* Returns a folder based on <code>folderName</code>. <code>folderName</code>
* can either be the fully quallified path, <code>folder1/folder2/folder3</code>
* or the folder name relative the <code>Folder</code> that this FolderSet
* was generated for.
*
* @param folderName
* @return
*/
Folder get(String folderName);
void add(Folder folder);
Iterator iterator();
int size();
}
1.5 +14 -3 jakarta-jetspeed-2/components/page-manager/src/test/org/apache/jetspeed/page/TestCastorXmlPageManager.java
Index: TestCastorXmlPageManager.java
===================================================================
RCS file: /home/cvs/jakarta-jetspeed-2/components/page-manager/src/test/org/apache/jetspeed/page/TestCastorXmlPageManager.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- TestCastorXmlPageManager.java 15 Jul 2004 20:41:54 -0000 1.4
+++ TestCastorXmlPageManager.java 15 Jul 2004 22:52:38 -0000 1.5
@@ -310,12 +310,23 @@
assertNotNull(folder1);
assertEquals(2, folder1.getFolders().size());
Iterator childItr = folder1.getFolders().iterator();
+ // Test that the folders are naturally orderd
Folder folder2 = (Folder) childItr.next();
assertEquals("folder1/folder2",folder2.getName());
Folder folder3 = (Folder) childItr.next();
- assertEquals("folder1/folder3",folder3.getName());
+ assertEquals("folder1/folder3",folder3.getName());
+
assertEquals(1, folder2.getPages().size());
- assertEquals(2, folder3.getPages().size());
+ assertEquals(2, folder3.getPages().size());
+
+ //Test FolderSet with both absolute and relative names
+ assertNotNull(folder1.getFolders().get("folder1/folder2"));
+ assertNotNull(folder1.getFolders().get("folder2"));
+ assertEquals(folder1.getFolders().get("folder1/folder2"), folder1.getFolders().get("folder2"));
+
+ //Test PageSet with both absolute and relative names
+ assertNotNull(folder3.getPages().get("folder1/folder3/test001.psml"));
+ assertNotNull(folder3.getPages().get("test001.psml"));
}
}
1.1 jakarta-jetspeed-2/jetspeed-api/src/java/org/apache/jetspeed/om/common/SecuredResource.java
Index: SecuredResource.java
===================================================================
/*
* Copyright 2000-2001,2004 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.om.common;
/**
* <p>
* SecuredResource
* </p>
* <p>
* Implemented by those resources that have an Acl defined for
* security purposes.
*
* </p>
* @author <a href="mailto:weaver@apache.org">Scott T. Weaver</a>
* @version $Id: SecuredResource.java,v 1.1 2004/07/15 22:52:38 weaver Exp $
*
*/
public interface SecuredResource
{
/**
*
* <p>
* getAcl
* </p>
*
* @return
*/
String getAcl();
/**
*
* <p>
* setAcl
* </p>
*
* @param acl
*/
void setAcl(String acl);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org