Author: rwatler
Date: Tue Dec 6 14:45:09 2005
New Revision: 354596
URL: http://svn.apache.org/viewcvs?rev=354596&view=rev
Log:
add Page.removeFragmentById() API
Modified:
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentPageImpl.java
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentImpl.java
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageImpl.java
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/PageImpl.java
portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestCastorXmlPageManager.java
portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestDatabasePageManager.java
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/Page.java
Modified:
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentPageImpl.java
URL:
http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentPageImpl.java?rev=354596&r1=354595&r2=354596&view=diff
==============================================================================
---
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentPageImpl.java
(original)
+++
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentPageImpl.java
Tue Dec 6 14:45:09 2005
@@ -64,6 +64,25 @@
}
/* (non-Javadoc)
+ * @see
org.apache.jetspeed.om.page.ContentPage#removeFragmentById(java.lang.String)
+ */
+ public Fragment removeFragmentById(String id)
+ {
+ // remove from underlying page
+ Fragment removed = page.removeFragmentById(id);
+ if (removed != null)
+ {
+ // reset content fragments if successfully removed
+ if ((rootContentFragment != null) &&
rootContentFragment.getId().equals(id))
+ {
+ rootContentFragment = null;
+ }
+ cachedFragments.clear();
+ }
+ return removed;
+ }
+
+ /* (non-Javadoc)
* @see
org.apache.jetspeed.om.page.ContentPage#getContentFragmentsByName(java.lang.String)
*/
public List getContentFragmentsByName(String name)
Modified:
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentImpl.java
URL:
http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentImpl.java?rev=354596&r1=354595&r2=354596&view=diff
==============================================================================
---
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentImpl.java
(original)
+++
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentImpl.java
Tue Dec 6 14:45:09 2005
@@ -165,6 +165,42 @@
}
/**
+ * removeFragmentById
+ *
+ * Remove fragment with matching id from
+ * child fragments.
+ *
+ * @param id fragment id to remove.
+ * @return removed fragment
+ */
+ Fragment removeFragmentById(String id)
+ {
+ // remove from deep children
+ if (fragments != null)
+ {
+ Iterator fragmentsIter = fragments.iterator();
+ while (fragmentsIter.hasNext())
+ {
+ FragmentImpl fragment = (FragmentImpl)fragmentsIter.next();
+ if (!fragment.getId().equals(id))
+ {
+ Fragment removed = fragment.removeFragmentById(id);
+ if (removed != null)
+ {
+ return removed;
+ }
+ }
+ else
+ {
+ fragmentsIter.remove();
+ return fragment;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
* getFragmentsByName
*
* Retrieve fragments with matching name including
Modified:
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageImpl.java
URL:
http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageImpl.java?rev=354596&r1=354595&r2=354596&view=diff
==============================================================================
---
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageImpl.java
(original)
+++
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageImpl.java
Tue Dec 6 14:45:09 2005
@@ -214,6 +214,31 @@
}
/* (non-Javadoc)
+ * @see
org.apache.jetspeed.om.page.Page#removeFragmentById(java.lang.String)
+ */
+ public Fragment removeFragmentById(String id)
+ {
+ // check for page edit access
+ checkAccess(SecuredResource.EDIT_ACTION);
+
+ // remove fragment by id
+ FragmentImpl rootFragment = (FragmentImpl)getRootFragment();
+ if (rootFragment != null)
+ {
+ if (rootFragment.getId().equals(id))
+ {
+ setRootFragment(null);
+ return rootFragment;
+ }
+ else
+ {
+ return rootFragment.removeFragmentById(id);
+ }
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
* @see
org.apache.jetspeed.om.page.Page#getFragmentsByName(java.lang.String)
*/
public List getFragmentsByName(String name)
Modified:
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/PageImpl.java
URL:
http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/PageImpl.java?rev=354596&r1=354595&r2=354596&view=diff
==============================================================================
---
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/PageImpl.java
(original)
+++
portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/PageImpl.java
Tue Dec 6 14:45:09 2005
@@ -17,8 +17,10 @@
package org.apache.jetspeed.om.page.psml;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Stack;
import org.apache.jetspeed.om.folder.psml.MenuDefinitionImpl;
@@ -169,6 +171,62 @@
}
return f;
+ }
+
+ public Fragment removeFragmentById( String id )
+ {
+ // find fragment by id, tracking fragment parent
+ Map parents = new HashMap();
+ Stack stack = new Stack();
+ if (getRootFragment() != null)
+ {
+ stack.push(getRootFragment());
+ }
+ Fragment f = (Fragment) stack.pop();
+ while ((f != null) && (!(f.getId().equals(id))))
+ {
+ Iterator i = f.getFragments().iterator();
+
+ while (i.hasNext())
+ {
+ Fragment child = (Fragment)i.next();
+ stack.push(child);
+ parents.put(child, f);
+ }
+
+ if (stack.size() > 0)
+ {
+ f = (Fragment) stack.pop();
+ }
+ else
+ {
+ f = null;
+ }
+ }
+
+ // remove fragment from parent/page root
+ if (f != null)
+ {
+ Fragment parent = (Fragment)parents.get(f);
+ if (parent != null)
+ {
+ if (parent.getFragments().remove(f))
+ {
+ return f;
+ }
+ }
+ else
+ {
+ if (f == root)
+ {
+ root = null;
+ return f;
+ }
+ }
+ }
+
+ // not found or removed
+ return null;
}
public List getFragmentsByName( String name )
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=354596&r1=354595&r2=354596&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 Dec 6 14:45:09 2005
@@ -400,6 +400,12 @@
{
Page page = pageManager.getPage(this.testPage002);
page.setTitle("Updated Title");
+ Fragment root = page.getRootFragment();
+ assertNotNull(root);
+ assertNotNull(root.getFragments());
+ assertEquals(1, root.getFragments().size());
+ String testId = ((Fragment)root.getFragments().get(0)).getId();
+ assertNotNull(page.removeFragmentById(testId));
try
{
@@ -415,6 +421,10 @@
page = pageManager.getPage(this.testPage002);
assertTrue(page.getTitle().equals("Updated Title"));
+ root = page.getRootFragment();
+ assertNotNull(root);
+ assertNotNull(root.getFragments());
+ assertTrue(root.getFragments().isEmpty());
}
public void testUpdateFolder() throws Exception
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=354596&r1=354595&r2=354596&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 Dec 6 14:45:09 2005
@@ -788,6 +788,10 @@
page.setTitle("UPDATED");
page.getRootFragment().getProperties().remove("custom-prop1");
page.getRootFragment().getProperties().put("UPDATED", "UPDATED");
+ assertNotNull(page.getRootFragment().getFragments());
+ assertEquals(2, page.getRootFragment().getFragments().size());
+ String removeId =
((Fragment)page.getRootFragment().getFragments().get(1)).getId();
+ assertNotNull(page.removeFragmentById(removeId));
SecurityConstraint pageConstraint = page.newSecurityConstraint();
pageConstraint.setUsers(Shared.makeListFromCSV("UPDATED"));
page.getSecurityConstraints().getSecurityConstraints().add(0,
pageConstraint);
Modified:
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/Page.java
URL:
http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/Page.java?rev=354596&r1=354595&r2=354596&view=diff
==============================================================================
---
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/Page.java
(original)
+++
portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/Page.java
Tue Dec 6 14:45:09 2005
@@ -96,6 +96,15 @@
Fragment getFragmentById(String id);
/**
+ * Removes the fragment contained within this page, with the
+ * specified Id.
+ *
+ * @param id the fragment id to remove
+ * @return the removed Fragment object or null if not found
+ */
+ Fragment removeFragmentById(String id);
+
+ /**
* Retrieves the fragments contained within this page, with the
* specified name.
*
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]