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 2009/11/18 19:24:53 UTC
svn commit: r881862 [8/16] - in /portals/jetspeed-2/portal/trunk: ./
applications/jetspeed/src/main/webapp/WEB-INF/jetui/yui/
applications/jetspeed/src/main/webapp/WEB-INF/templates/
applications/jetspeed/src/main/webapp/decorations/layout/greenearth/ ...
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/FragmentImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/FragmentImpl.java?rev=881862&r1=881861&r2=881862&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/FragmentImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/FragmentImpl.java Wed Nov 18 18:24:48 2009
@@ -17,59 +17,35 @@
package org.apache.jetspeed.om.page.psml;
-import java.security.AccessController;
-import java.security.Permission;
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.JetspeedActions;
import org.apache.jetspeed.idgenerator.IdGenerator;
import org.apache.jetspeed.om.folder.Folder;
+import org.apache.jetspeed.om.page.BaseFragmentElement;
+import org.apache.jetspeed.om.page.BaseFragmentValidationListener;
import org.apache.jetspeed.om.page.Fragment;
-import org.apache.jetspeed.om.page.PageSecurity;
-import org.apache.jetspeed.security.PermissionFactory;
/**
* @version $Id$
*/
-public class FragmentImpl extends AbstractBaseElement implements Fragment, java.io.Serializable
+public class FragmentImpl extends AbstractBaseFragmentElement implements Fragment, java.io.Serializable
{
private String type = null;
- private String state = null;
-
- private String mode = null;
-
- private String decorator = null;
-
- private String skin = null;
-
private List fragments = new ArrayList();
- private List propertiesList = new ArrayList();
-
- private List preferences = new ArrayList();
-
- private Map propertiesMap = new HashMap();
+ private List fragmentElementImpls = new ArrayList();
private String name;
private FragmentList fragmentsList;
- private PageImpl page;
-
- private boolean dirty = false;
-
- private static PermissionFactory pf;
-
- public static void setPermissionsFactory(PermissionFactory pf)
- {
- FragmentImpl.pf = pf;
- }
-
/**
* <p>
* Default Constructor.
@@ -89,51 +65,6 @@
this.type = type;
}
- public String getState()
- {
- return this.state;
- }
-
- public void setState( String state )
- {
- this.state = state;
- }
-
- public String getMode()
- {
- return this.mode;
- }
-
- public void setMode( String mode )
- {
- this.mode = mode;
- }
-
- public String getDecorator()
- {
- return this.decorator;
- }
-
- public void setDecorator( String decoratorName )
- {
- this.decorator = decoratorName;
- }
-
- public String getSkin()
- {
- return this.skin;
- }
-
- public void setSkin( String skin )
- {
- this.skin = skin;
- }
-
- public boolean isReference()
- {
- return false;
- }
-
List accessFragments()
{
return fragments;
@@ -150,358 +81,170 @@
return filterFragmentsByAccess(fragmentsList);
}
- public List getPropertiesList()
- {
- return (List) this.propertiesList;
- }
-
- /**
- * @see org.apache.jetspeed.om.page.Fragment#getProperty(java.lang.String)
- */
- public String getProperty(String propName)
- {
- return (String)propertiesMap.get(propName);
- }
-
/**
- * @see org.apache.jetspeed.om.page.Fragment#getIntProperty(java.lang.String)
- */
- public int getIntProperty(String propName)
- {
- String prop = (String)propertiesMap.get(propName);
- if (prop != null)
- {
- return Integer.parseInt(prop);
- }
- return -1;
- }
-
- /**
- * @see org.apache.jetspeed.om.page.Fragment#getFloatProperty(java.lang.String)
- */
- public float getFloatProperty(String propName)
- {
- String prop = (String)propertiesMap.get(propName);
- if (prop != null)
- {
- return Float.parseFloat(prop);
- }
- return -1.0F;
- }
-
- /**
- * @see org.apache.jetspeed.om.page.Fragment#getProperties()
- */
- public Map getProperties()
- {
- return propertiesMap;
- }
-
- /**
- * @see org.apache.jetspeed.om.page.Fragment#getLayoutRow()
+ * getFragmentElementImpls - get list of wrapped fragment elements
+ *
+ * @return wrapped element list
*/
- public int getLayoutRow()
+ public List getFragmentElementImpls()
{
- return getIntProperty(ROW_PROPERTY_NAME);
+ return fragmentElementImpls;
}
/**
- * @see org.apache.jetspeed.om.page.Fragment#setLayoutRow(int)
+ * setFragmentElementImpls - set list of wrapped fragment elements
+ *
+ * @param elements wrapped element list
*/
- public void setLayoutRow(int row)
+ public void setFragmentElementImpls(List elements)
{
- if (row >= 0)
- {
- propertiesMap.put(ROW_PROPERTY_NAME, String.valueOf(row));
- }
- else
- {
- propertiesMap.remove(ROW_PROPERTY_NAME);
- }
+ fragmentElementImpls = elements;
}
/**
- * @see org.apache.jetspeed.om.page.Fragment#getLayoutColumn()
+ * <p>
+ * getName
+ * </p>
+ *
+ * @see org.apache.jetspeed.om.page.Fragment#getName()
+ * @return
*/
- public int getLayoutColumn()
+ public String getName()
{
- return getIntProperty(COLUMN_PROPERTY_NAME);
+ return name;
}
/**
- * @see org.apache.jetspeed.om.page.Fragment#setLayoutColumn(int)
- */
- public void setLayoutColumn(int column)
- {
- if (column >= 0)
- {
- propertiesMap.put(COLUMN_PROPERTY_NAME, String.valueOf(column));
- }
- else
- {
- propertiesMap.remove(COLUMN_PROPERTY_NAME);
- }
- }
-
- /**
- * @see org.apache.jetspeed.om.page.Fragment#getLayoutSizes()
- */
- public String getLayoutSizes()
- {
- return (String)propertiesMap.get(SIZES_PROPERTY_NAME);
- }
-
- /**
- * @see org.apache.jetspeed.om.page.Fragment#setLayoutSizes(java.lang.String)
+ * <p>
+ * setName
+ * </p>
+ *
+ * @see org.apache.jetspeed.om.page.Fragment#setName(java.lang.String)
+ * @param name
*/
- public void setLayoutSizes(String sizes)
+ public void setName( String name )
{
- if (sizes != null)
- {
- propertiesMap.put(SIZES_PROPERTY_NAME, sizes);
- }
- else
- {
- propertiesMap.remove(SIZES_PROPERTY_NAME);
- }
- }
+ this.name = name;
- /**
- * @see org.apache.jetspeed.om.page.Fragment#getLayoutX()
- */
- public float getLayoutX()
- {
- return getFloatProperty(X_PROPERTY_NAME);
}
- /**
- * @see org.apache.jetspeed.om.page.Fragment#setLayoutX(float)
- */
- public void setLayoutX(float x)
+ void setBaseFragmentsElement(AbstractBaseFragmentsElement baseFragmentsElement)
{
- if (x >= 0.0F)
- {
- propertiesMap.put(X_PROPERTY_NAME, String.valueOf(x));
- }
- else
+ // set base fragments implementation
+ super.setBaseFragmentsElement(baseFragmentsElement);
+ // propagate to children
+ if (fragments != null)
{
- propertiesMap.remove(X_PROPERTY_NAME);
+ Iterator fragmentsIter = fragments.iterator();
+ while (fragmentsIter.hasNext())
+ {
+ ((AbstractBaseFragmentElement)fragmentsIter.next()).setBaseFragmentsElement(baseFragmentsElement);
+ }
}
}
- /**
- * @see org.apache.jetspeed.om.page.Fragment#getLayoutY()
- */
- public float getLayoutY()
- {
- return getFloatProperty(Y_PROPERTY_NAME);
- }
-
- /**
- * @see org.apache.jetspeed.om.page.Fragment#setLayoutY(float)
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Fragment#getFragmentById(java.lang.String)
*/
- public void setLayoutY(float y)
+ public BaseFragmentElement getFragmentById( String id )
{
- if (y >= 0.0F)
- {
- propertiesMap.put(Y_PROPERTY_NAME, String.valueOf(y));
- }
- else
+ Stack stack = new Stack();
+ Iterator i = getFragments().iterator();
+ while (i.hasNext())
{
- propertiesMap.remove(Y_PROPERTY_NAME);
+ stack.push(i.next());
}
- }
- /**
- * @see org.apache.jetspeed.om.page.Fragment#getLayoutZ()
- */
- public float getLayoutZ()
- {
- return getFloatProperty(Z_PROPERTY_NAME);
- }
+ BaseFragmentElement f = (BaseFragmentElement) stack.pop();
- /**
- * @see org.apache.jetspeed.om.page.Fragment#setLayoutZ(float)
- */
- public void setLayoutZ(float z)
- {
- if (z >= 0.0F)
- {
- propertiesMap.put(Z_PROPERTY_NAME, String.valueOf(z));
- }
- else
+ while ((f != null) && (!(f.getId().equals(id))))
{
- propertiesMap.remove(Z_PROPERTY_NAME);
- }
- }
+ if (f instanceof Fragment)
+ {
+ i = ((Fragment)f).getFragments().iterator();
- /**
- * @see org.apache.jetspeed.om.page.Fragment#getLayoutWidth()
- */
- public float getLayoutWidth()
- {
- return getFloatProperty(WIDTH_PROPERTY_NAME);
- }
+ while (i.hasNext())
+ {
+ stack.push(i.next());
+ }
+ }
- /**
- * @see org.apache.jetspeed.om.page.Fragment#setLayoutWidth(float)
- */
- public void setLayoutWidth(float width)
- {
- if (width >= 0.0F)
- {
- propertiesMap.put(WIDTH_PROPERTY_NAME, String.valueOf(width));
- }
- else
- {
- propertiesMap.remove(WIDTH_PROPERTY_NAME);
+ if (stack.size() > 0)
+ {
+ f = (BaseFragmentElement) stack.pop();
+ }
+ else
+ {
+ f = null;
+ }
}
- }
- /**
- * @see org.apache.jetspeed.om.page.Fragment#getLayoutHeight()
- */
- public float getLayoutHeight()
- {
- return getFloatProperty(HEIGHT_PROPERTY_NAME);
+ return f;
}
- /**
- * @see org.apache.jetspeed.om.page.Fragment#setLayoutHeight(float)
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Fragment#removeFragmentById(java.lang.String)
*/
- public void setLayoutHeight(float height)
+ public BaseFragmentElement removeFragmentById( String id )
{
- if (height >= 0.0F)
+ // find fragment by id, tracking fragment parent
+ Map parents = new HashMap();
+ Stack stack = new Stack();
+ Iterator i = getFragments().iterator();
+ while (i.hasNext())
{
- propertiesMap.put(HEIGHT_PROPERTY_NAME, String.valueOf(height));
+ stack.push(i.next());
}
- else
- {
- propertiesMap.remove(HEIGHT_PROPERTY_NAME);
- }
- }
- /**
- * <p>
- * equals
- * </p>
- *
- * @see java.lang.Object#equals(java.lang.Object)
- * @param obj
- * @return
- */
- public boolean equals( Object obj )
- {
- boolean isEqual = false;
- if (obj != null && obj instanceof Fragment)
+ BaseFragmentElement f = (BaseFragmentElement) stack.pop();
+ while ((f != null) && (!(f.getId().equals(id))))
{
- Fragment aFragment = (Fragment) obj;
- if ((null != aFragment.getId()) && (null != getId()) && (getId().equals(aFragment.getId())))
+ if (f instanceof Fragment)
{
- isEqual = true;
+ i = ((Fragment)f).getFragments().iterator();
+
+ while (i.hasNext())
+ {
+ BaseFragmentElement child = (BaseFragmentElement)i.next();
+ stack.push(child);
+ parents.put(child, f);
+ }
}
- }
- return isEqual;
- }
- /**
- * <p>
- * hashCode
- * </p>
- *
- * @see java.lang.Object#hashCode()
- * @return
- */
- public int hashCode()
- {
- if (getId() != null)
- {
- return (Fragment.class.getName() + ":" + getId()).hashCode();
- }
- else
- {
- return super.hashCode();
+ if (stack.size() > 0)
+ {
+ f = (BaseFragmentElement) stack.pop();
+ }
+ else
+ {
+ f = null;
+ }
}
- }
-
- /**
- * <p>
- * getName
- * </p>
- *
- * @see org.apache.jetspeed.om.page.Fragment#getName()
- * @return
- */
- public String getName()
- {
- return name;
- }
-
- /**
- * <p>
- * setName
- * </p>
- *
- * @see org.apache.jetspeed.om.page.Fragment#setName(java.lang.String)
- * @param name
- */
- public void setName( String name )
- {
- this.name = name;
- }
-
- /**
- * <p>
- * getPreferences
- * </p>
- *
- * @see org.apache.jetspeed.om.page.Fragment#getPreferences()
- * @param name
- */
- public List getPreferences()
- {
- return preferences;
- }
-
- public void setPreferences(List preferences)
- {
- this.preferences = preferences;
- }
-
- PageImpl getPage()
- {
- return page;
- }
-
- void setPage(PageImpl page)
- {
- // set page implementation
- this.page = page;
- if (dirty){
- page.setDirty(dirty);
- }
- // propagate to children
- if (fragments != null)
+ // remove fragment from parent/fragments
+ if (f != null)
{
- Iterator fragmentsIter = fragments.iterator();
- while (fragmentsIter.hasNext())
+ BaseFragmentElement parent = (BaseFragmentElement)parents.get(f);
+ if (parent != null)
{
- ((FragmentImpl)fragmentsIter.next()).setPage(page);
+ if (parent instanceof Fragment)
+ {
+ if (((Fragment)parent).getFragments().remove(f))
+ {
+ return f;
+ }
+ }
+ }
+ else
+ {
+ if (getFragments().remove(f))
+ {
+ return f;
+ }
}
}
- }
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.psml.AbstractElementImpl#getEffectivePageSecurity()
- */
- public PageSecurity getEffectivePageSecurity()
- {
- // delegate to page implementation
- if (page != null)
- {
- return page.getEffectivePageSecurity();
- }
+ // not found or removed
return null;
}
@@ -510,10 +253,10 @@
*/
public String getLogicalPermissionPath()
{
- // use page implementation path as base and append name
- if ((page != null) && (getName() != null))
+ // use base fragments implementation path as base and append name
+ if ((getBaseFragmentsElement() != null) && (getName() != null))
{
- return page.getLogicalPermissionPath() + Folder.PATH_SEPARATOR + getName();
+ return getBaseFragmentsElement().getLogicalPermissionPath() + Folder.PATH_SEPARATOR + getName();
}
return null;
}
@@ -523,47 +266,39 @@
*/
public String getPhysicalPermissionPath()
{
- // use page implementation path as base and append name
- if ((page != null) && (getName() != null))
+ // use base fragments implementation path as base and append name
+ if ((getBaseFragmentsElement() != null) && (getName() != null))
{
- return page.getPhysicalPermissionPath() + Folder.PATH_SEPARATOR + getName();
+ return getBaseFragmentsElement().getPhysicalPermissionPath() + Folder.PATH_SEPARATOR + getName();
}
return null;
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.psml.AbstractElementImpl#checkPermissions(java.lang.String, int, boolean, boolean)
+ * @see org.apache.jetspeed.om.page.psml.AbstractBaseFragmentElement#validateFragments(org.apache.jetspeed.om.page.BaseFragmentValidationListener)
*/
- public void checkPermissions(String path, int mask, boolean checkNodeOnly, boolean checkParentsOnly) throws SecurityException
+ protected boolean validateFragments(BaseFragmentValidationListener validationListener)
{
- // always check for granted fragment permissions
- AccessController.checkPermission((Permission)pf.newPermission(pf.FRAGMENT_PERMISSION, path, mask));
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.common.SecuredResource#getConstraintsEnabled()
- */
- public boolean getConstraintsEnabled()
- {
- if (page != null)
+ // validate fragment using validation listener
+ if (!validationListener.validate(this))
{
- return page.getConstraintsEnabled();
+ return false;
}
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.common.SecuredResource#getPermissionsEnabled()
- */
- public boolean getPermissionsEnabled()
- {
- if (page != null)
+ // validate fragments using validation listener
+ if (fragments != null)
{
- return page.getPermissionsEnabled();
+ Iterator fragmentsIter = fragments.iterator();
+ while (fragmentsIter.hasNext())
+ {
+ if (!((AbstractBaseFragmentElement)fragmentsIter.next()).validateFragments(validationListener))
+ {
+ return false;
+ }
+ }
}
- return false;
+ return true;
}
-
+
/**
* unmarshalled - notification that this instance has been
* loaded from the persistent store
@@ -575,30 +310,21 @@
// notify super class implementation
boolean dirty = super.unmarshalled(generator);
- // propagate unmarshalled notification
- // to all fragments
- Iterator fragmentIter = fragments.iterator();
- while (fragmentIter.hasNext())
- {
- dirty = ((FragmentImpl)fragmentIter.next()).unmarshalled(generator) || dirty;
- }
-
- // generate id if required
- if (getId() == null)
- {
- setId(generator.getNextPeid());
- dirty = true;
+ // unwrap fragment elements and propagate
+ // unmarshalled notification
+ fragments.clear();
+ Iterator fragmentElementIter = fragmentElementImpls.iterator();
+ while (fragmentElementIter.hasNext())
+ {
+ // unwrap fragment element
+ FragmentElementImpl fragmentElement = (FragmentElementImpl)fragmentElementIter.next();
+ AbstractBaseFragmentElement fragment = (AbstractBaseFragmentElement)fragmentElement.getElement();
+ fragments.add(fragment);
+
+ // propagate unmarshalled notification
+ dirty = fragment.unmarshalled(generator) || dirty;
}
- // load the properties map from list
- propertiesMap.clear();
- Iterator propsIter = propertiesList.iterator();
- while (propsIter.hasNext())
- {
- PropertyImpl prop = (PropertyImpl) propsIter.next();
- propertiesMap.put(prop.getName(), prop.getValue());
- }
-
return dirty;
}
@@ -608,38 +334,18 @@
*/
public void marshalling()
{
- // update the properties list from the map
- // if change/edit detected
- boolean changed = (propertiesMap.size() != propertiesList.size());
- if (!changed)
- {
- Iterator propsIter = propertiesList.iterator();
- while (!changed && propsIter.hasNext())
- {
- PropertyImpl prop = (PropertyImpl) propsIter.next();
- changed = (prop.getValue() != propertiesMap.get(prop.getName()));
- }
- }
- if (changed)
- {
- propertiesList.clear();
- Iterator propsIter = propertiesMap.entrySet().iterator();
- while (propsIter.hasNext())
- {
- Map.Entry prop = (Map.Entry) propsIter.next();
- PropertyImpl listProp = new PropertyImpl();
- listProp.setName((String)prop.getKey());
- listProp.setValue((String)prop.getValue());
- propertiesList.add(listProp);
- }
- }
-
- // propagate marshalling notification
- // to all fragments
+ // wrap menu elements and propagate
+ // marshalling notification
+ fragmentElementImpls.clear();
Iterator fragmentIter = fragments.iterator();
while (fragmentIter.hasNext())
{
- ((FragmentImpl)fragmentIter.next()).marshalling();
+ // wrap fragment element
+ AbstractBaseFragmentElement fragment = (AbstractBaseFragmentElement)fragmentIter.next();
+ fragmentElementImpls.add(new FragmentElementImpl(fragment));
+
+ // propagate marshalling notification
+ fragment.marshalling();
}
// notify super class implementation
@@ -664,7 +370,7 @@
Iterator checkAccessIter = fragments.iterator();
while (checkAccessIter.hasNext())
{
- Fragment fragment = (Fragment) checkAccessIter.next();
+ BaseFragmentElement fragment = (BaseFragmentElement) checkAccessIter.next();
try
{
// check access
@@ -688,7 +394,7 @@
Iterator copyIter = fragments.iterator();
while (copyIter.hasNext())
{
- Fragment copyFragment = (Fragment)copyIter.next();
+ BaseFragmentElement copyFragment = (BaseFragmentElement)copyIter.next();
if (copyFragment != fragment)
{
filteredFragments.add(copyFragment);
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/FragmentList.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/FragmentList.java?rev=881862&r1=881861&r2=881862&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/FragmentList.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/FragmentList.java Wed Nov 18 18:24:48 2009
@@ -40,11 +40,11 @@
public void add(int index, Object element)
{
// implement for modifiable AbstractList:
- // add and maintain page implementation reference
+ // add and maintain base fragments implementation reference
fragment.accessFragments().add(index, element);
- if ((fragment.getPage() != null) && (element instanceof FragmentImpl))
+ if ((fragment.getBaseFragmentsElement() != null) && (element instanceof FragmentImpl))
{
- ((FragmentImpl)element).setPage(fragment.getPage());
+ ((FragmentImpl)element).setBaseFragmentsElement(fragment.getBaseFragmentsElement());
}
}
@@ -72,11 +72,11 @@
public Object set(int index, Object element)
{
// implement for modifiable AbstractList:
- // set and maintain page implementation reference
+ // set and maintain base fragments implementation reference
Object o = fragment.accessFragments().set(index, element);
- if ((fragment.getPage() != null) && (element instanceof FragmentImpl))
+ if ((fragment.getBaseFragmentsElement() != null) && (element instanceof FragmentImpl))
{
- ((FragmentImpl)element).setPage(fragment.getPage());
+ ((FragmentImpl)element).setBaseFragmentsElement(fragment.getBaseFragmentsElement());
}
return o;
}
Added: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/FragmentReferenceImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/FragmentReferenceImpl.java?rev=881862&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/FragmentReferenceImpl.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/FragmentReferenceImpl.java Wed Nov 18 18:24:48 2009
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jetspeed.om.page.psml;
+
+import org.apache.jetspeed.om.page.FragmentReference;
+
+public class FragmentReferenceImpl extends AbstractBaseFragmentElement implements FragmentReference, java.io.Serializable
+{
+ private String refId;
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.FragmentReference#getRefId()
+ */
+ public String getRefId()
+ {
+ return refId;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.FragmentReference#setRefId(java.lang.String)
+ */
+ public void setRefId(String refId)
+ {
+ this.refId = refId;
+ }
+}
Added: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/PageFragmentImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/PageFragmentImpl.java?rev=881862&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/PageFragmentImpl.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/PageFragmentImpl.java Wed Nov 18 18:24:48 2009
@@ -0,0 +1,24 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jetspeed.om.page.psml;
+
+import org.apache.jetspeed.om.page.PageFragment;
+
+public class PageFragmentImpl extends AbstractBaseFragmentElement implements PageFragment, java.io.Serializable
+{
+}
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/PageImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/PageImpl.java?rev=881862&r1=881861&r2=881862&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/PageImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/PageImpl.java Wed Nov 18 18:24:48 2009
@@ -17,439 +17,30 @@
package org.apache.jetspeed.om.page.psml;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Stack;
-
-import org.apache.jetspeed.idgenerator.IdGenerator;
-import org.apache.jetspeed.om.folder.Folder;
-import org.apache.jetspeed.om.folder.MenuDefinition;
-import org.apache.jetspeed.om.folder.MenuExcludeDefinition;
-import org.apache.jetspeed.om.folder.MenuIncludeDefinition;
-import org.apache.jetspeed.om.folder.MenuOptionsDefinition;
-import org.apache.jetspeed.om.folder.MenuSeparatorDefinition;
-import org.apache.jetspeed.om.folder.psml.MenuDefinitionImpl;
-import org.apache.jetspeed.om.folder.psml.MenuExcludeDefinitionImpl;
-import org.apache.jetspeed.om.folder.psml.MenuIncludeDefinitionImpl;
-import org.apache.jetspeed.om.folder.psml.MenuOptionsDefinitionImpl;
-import org.apache.jetspeed.om.folder.psml.MenuSeparatorDefinitionImpl;
-import org.apache.jetspeed.om.page.Fragment;
import org.apache.jetspeed.om.page.Page;
-import org.apache.jetspeed.page.impl.DatabasePageManagerUtils;
/**
+ * Portal page definition implementation.
+ *
* @version $Id$
*/
-public class PageImpl extends DocumentImpl implements Page
+public class PageImpl extends AbstractBaseConcretePageElement implements Page
{
- private DefaultsImpl defaults = new DefaultsImpl();
-
- private Fragment root = null;
-
- private int hashCode;
-
- /**
- * menuDefinitions - menu definitions for page
- */
- private List menuDefinitions;
-
- public PageImpl()
- {
- // empty constructor
- super();
- }
+ private static final long serialVersionUID = 1L;
- /**
- * <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>
- * equals
- * </p>
- *
- * @see java.lang.Object#equals(java.lang.Object)
- * @param obj
- * @return
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.psml.AbstractBasePageElement#equals(java.lang.Object)
*/
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 getSkin()
- {
- return defaults.getSkin();
- }
-
- public void setSkin( String skinName )
- {
- defaults.setSkin(skinName);
+ return (obj instanceof Page) ? super.equals(obj) : false;
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Page#getEffectiveDefaultDecorator(java.lang.String)
- */
- public String getEffectiveDefaultDecorator(String fragmentType)
- {
- // get locally defined decorator
- String decorator = getDefaultDecorator(fragmentType);
- if (decorator == null)
- {
- // delegate to parent folder
- Folder parentFolder = (Folder)getParent();
- if (parentFolder != null)
- {
- return parentFolder.getEffectiveDefaultDecorator(fragmentType);
- }
- }
- return decorator;
- }
-
- public String getDefaultDecorator( String fragmentType )
- {
- return defaults.getDecorator(fragmentType);
- }
-
- public void setDefaultDecorator( String decoratorName, String fragmentType )
- {
- defaults.setDecorator(fragmentType, decoratorName);
- }
-
- public Fragment getRootFragment()
- {
- return this.root;
- }
-
- public void setRootFragment( Fragment root )
- {
- this.root = root;
- if (root instanceof FragmentImpl)
- {
- ((FragmentImpl)root).setPage(this);
- }
- }
-
- public Fragment getFragmentById( String id )
- {
- 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())
- {
- stack.push(i.next());
- }
-
- if (stack.size() > 0)
- {
- f = (Fragment) stack.pop();
- }
- else
- {
- f = null;
- }
- }
-
- 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 )
- {
- List fragments = DatabasePageManagerUtils.createList();
-
- Stack stack = new Stack();
- if (getRootFragment() != null)
- {
- stack.push(getRootFragment());
- }
-
- Fragment f = (Fragment) stack.pop();
-
- while (f != null)
- {
- if ((f.getName() != null) && f.getName().equals(name))
- {
- fragments.add(f);
- }
-
- Iterator i = f.getFragments().iterator();
-
- while (i.hasNext())
- {
- stack.push(i.next());
- }
-
- if (stack.size() > 0)
- {
- f = (Fragment) stack.pop();
- }
- else
- {
- f = null;
- }
- }
-
- return fragments;
- }
-
- public DefaultsImpl getDefaults()
- {
- return this.defaults;
- }
-
- public void setDefaults( DefaultsImpl defaults )
- {
- this.defaults = defaults;
- }
-
- /**
- * <p>
- * getType
- * </p>
- *
- * @see org.apache.jetspeed.om.page.Document#getType()
- * @return
+ * @see org.apache.jetspeed.page.document.Node#getType()
*/
public String getType()
{
return DOCUMENT_TYPE;
}
-
- /**
- * getMenuDefinitions - get list of menu definitions
- *
- * @return definition list
- */
- public List getMenuDefinitions()
- {
- return menuDefinitions;
- }
-
- /**
- * newMenuDefinition - creates a new empty menu definition
- *
- * @return a newly created MenuDefinition object for use in Page
- */
- public MenuDefinition newMenuDefinition()
- {
- return new MenuDefinitionImpl();
- }
-
- /**
- * newMenuExcludeDefinition - creates a new empty menu exclude definition
- *
- * @return a newly created MenuExcludeDefinition object for use in Page
- */
- public MenuExcludeDefinition newMenuExcludeDefinition()
- {
- return new MenuExcludeDefinitionImpl();
- }
-
- /**
- * newMenuIncludeDefinition - creates a new empty menu include definition
- *
- * @return a newly created MenuIncludeDefinition object for use in Page
- */
- public MenuIncludeDefinition newMenuIncludeDefinition()
- {
- return new MenuIncludeDefinitionImpl();
- }
-
- /**
- * newMenuOptionsDefinition - creates a new empty menu options definition
- *
- * @return a newly created MenuOptionsDefinition object for use in Page
- */
- public MenuOptionsDefinition newMenuOptionsDefinition()
- {
- return new MenuOptionsDefinitionImpl();
- }
-
- /**
- * newMenuSeparatorDefinition - creates a new empty menu separator definition
- *
- * @return a newly created MenuSeparatorDefinition object for use in Page
- */
- public MenuSeparatorDefinition newMenuSeparatorDefinition()
- {
- return new MenuSeparatorDefinitionImpl();
- }
-
- /**
- * setMenuDefinitions - set list of menu definitions
- *
- * @param definitions definition list
- */
- public void setMenuDefinitions(List definitions)
- {
- menuDefinitions = definitions;
- }
-
- /**
- * unmarshalled - notification that this instance has been
- * loaded from the persistent store
- * @param generator id generator
- * @return dirty flag
- */
- public boolean unmarshalled(IdGenerator generator)
- {
- // notify super class implementation
- boolean dirty = super.unmarshalled(generator);
-
- // propagate unmarshalled notification
- // to all menu definitions
- if (menuDefinitions != null)
- {
- Iterator menuIter = menuDefinitions.iterator();
- while (menuIter.hasNext())
- {
- ((MenuDefinitionImpl)menuIter.next()).unmarshalled();
- }
- }
-
- // propagate unmarshalled notification
- // to root fragment
- if (root != null)
- {
- dirty = (((FragmentImpl)root).unmarshalled(generator) || dirty);
- }
-
- // default title of pages to name
- if (getTitle() == null)
- {
- setTitle(getTitleName());
- }
-
- return dirty;
- }
-
- /**
- * marshalling - notification that this instance is to
- * be saved to the persistent store
- */
- public void marshalling()
- {
- // propagate marshalling notification
- // to root fragment
- if (root != null)
- {
- ((FragmentImpl)root).marshalling();
- }
-
- // propagate marshalling notification
- // to all menu definitions
- if (menuDefinitions != null)
- {
- Iterator menuIter = menuDefinitions.iterator();
- while (menuIter.hasNext())
- {
- ((MenuDefinitionImpl)menuIter.next()).marshalling();
- }
- }
-
- // notify super class implementation
- super.marshalling();
- }
}
-
Added: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/PageTemplateImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/PageTemplateImpl.java?rev=881862&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/PageTemplateImpl.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/PageTemplateImpl.java Wed Nov 18 18:24:48 2009
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jetspeed.om.page.psml;
+
+import org.apache.jetspeed.om.page.PageTemplate;
+import org.apache.jetspeed.om.page.BaseFragmentElement;
+import org.apache.jetspeed.om.page.BaseFragmentValidationListener;
+import org.apache.jetspeed.om.page.PageFragment;
+
+/**
+ * Portal page template implementation.
+ *
+ * @version $Id:$
+ */
+public class PageTemplateImpl extends AbstractBasePageElement implements PageTemplate
+{
+ private static final long serialVersionUID = 1L;
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.document.Node#getType()
+ */
+ public String getType()
+ {
+ return DOCUMENT_TYPE;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.document.psml.AbstractNode#isHidden()
+ */
+ public boolean isHidden()
+ {
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.document.psml.AbstractNode#setHidden(boolean)
+ */
+ public void setHidden(boolean hidden)
+ {
+ throw new UnsupportedOperationException("PageTemplate.setHidden()");
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.psml.AbstractBaseFragmentsElement#newBaseFragmentValidationListener()
+ */
+ protected BaseFragmentValidationListener newBaseFragmentValidationListener()
+ {
+ return new BaseFragmentValidationListener()
+ {
+ private boolean valid;
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentValidationListener#validate(org.apache.jetspeed.om.page.BaseFragmentElement)
+ */
+ public boolean validate(BaseFragmentElement fragmentElement)
+ {
+ // one PageFragment required
+ if (!valid)
+ {
+ valid = (fragmentElement instanceof PageFragment);
+ return true;
+ }
+ else
+ {
+ return !(fragmentElement instanceof PageFragment);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentValidationListener#validate()
+ */
+ public boolean validate()
+ {
+ // one PageFragment required
+ return valid;
+ }
+ };
+ }
+}
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/AbstractPageManager.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/AbstractPageManager.java?rev=881862&r1=881861&r2=881862&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/AbstractPageManager.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/AbstractPageManager.java Wed Nov 18 18:24:48 2009
@@ -37,10 +37,18 @@
import org.apache.jetspeed.om.folder.MenuIncludeDefinition;
import org.apache.jetspeed.om.folder.MenuOptionsDefinition;
import org.apache.jetspeed.om.folder.MenuSeparatorDefinition;
+import org.apache.jetspeed.om.page.BaseFragmentElement;
+import org.apache.jetspeed.om.page.BaseFragmentsElement;
+import org.apache.jetspeed.om.page.BasePageElement;
+import org.apache.jetspeed.om.page.DynamicPage;
import org.apache.jetspeed.om.page.Fragment;
+import org.apache.jetspeed.om.page.FragmentDefinition;
+import org.apache.jetspeed.om.page.FragmentReference;
import org.apache.jetspeed.om.page.Link;
import org.apache.jetspeed.om.page.Page;
+import org.apache.jetspeed.om.page.PageFragment;
import org.apache.jetspeed.om.page.PageSecurity;
+import org.apache.jetspeed.om.page.PageTemplate;
import org.apache.jetspeed.om.page.SecurityConstraintsDef;
import org.apache.jetspeed.om.preference.FragmentPreference;
import org.apache.jetspeed.page.document.Node;
@@ -89,6 +97,11 @@
protected Class pageSecuritySecurityConstraintClass;
protected Class securityConstraintsDefClass;
protected Class fragmentPreferenceClass;
+ protected Class fragmentReferenceClass;
+ protected Class pageFragmentClass;
+ protected Class pageTemplateClass;
+ protected Class dynamicPageClass;
+ protected Class fragmentDefinitionClass;
private IdGenerator generator;
@@ -159,6 +172,11 @@
this.pageSecuritySecurityConstraintClass = (Class)modelClasses.get("PageSecuritySecurityConstraintImpl");
this.securityConstraintsDefClass = (Class)modelClasses.get("SecurityConstraintsDefImpl");
this.fragmentPreferenceClass = (Class)modelClasses.get("FragmentPreferenceImpl");
+ this.fragmentReferenceClass = (Class)modelClasses.get("FragmentReferenceImpl");
+ this.pageFragmentClass = (Class)modelClasses.get("PageFragmentImpl");
+ this.pageTemplateClass = (Class)modelClasses.get("PageTemplateImpl");
+ this.dynamicPageClass = (Class)modelClasses.get("DynamicPageImpl");
+ this.fragmentDefinitionClass = (Class)modelClasses.get("FragmentDefinitionImpl");
}
/* (non-Javadoc)
@@ -217,6 +235,99 @@
}
/* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#newPageTemplate(java.lang.String)
+ */
+ public PageTemplate newPageTemplate(String path)
+ {
+ PageTemplate pageTemplate = null;
+ try
+ {
+ // factory create the page template and set id/path
+ pageTemplate = (PageTemplate)createObject(this.pageTemplateClass);
+ if (!path.startsWith(Folder.PATH_SEPARATOR))
+ {
+ path = Folder.PATH_SEPARATOR + path;
+ }
+ if (!path.endsWith(PageTemplate.DOCUMENT_TYPE))
+ {
+ path += Page.DOCUMENT_TYPE;
+ }
+ pageTemplate.setPath(path);
+
+ // create the default fragment
+ pageTemplate.setRootFragment(newFragment());
+ }
+ catch (ClassCastException e)
+ {
+ String message = "Failed to create page template object for " + this.pageTemplateClass;
+ log.error(message, e);
+ }
+ return pageTemplate;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#newDynamicPage(java.lang.String)
+ */
+ public DynamicPage newDynamicPage(String path)
+ {
+ DynamicPage dynamicPage = null;
+ try
+ {
+ // factory create the dynamic page and set id/path
+ dynamicPage = (DynamicPage)createObject(this.dynamicPageClass);
+ if (!path.startsWith(Folder.PATH_SEPARATOR))
+ {
+ path = Folder.PATH_SEPARATOR + path;
+ }
+ if (!path.endsWith(DynamicPage.DOCUMENT_TYPE))
+ {
+ path += DynamicPage.DOCUMENT_TYPE;
+ }
+ dynamicPage.setPath(path);
+
+ // create the default fragment
+ dynamicPage.setRootFragment(newFragment());
+ }
+ catch (ClassCastException e)
+ {
+ String message = "Failed to create dynamic page object for " + this.dynamicPageClass;
+ log.error(message, e);
+ }
+ return dynamicPage;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#newFragmentDefinition(java.lang.String)
+ */
+ public FragmentDefinition newFragmentDefinition(String path)
+ {
+ FragmentDefinition fragmentDefinition = null;
+ try
+ {
+ // factory create the fragment definition and set id/path
+ fragmentDefinition = (FragmentDefinition)createObject(this.fragmentDefinitionClass);
+ if (!path.startsWith(Folder.PATH_SEPARATOR))
+ {
+ path = Folder.PATH_SEPARATOR + path;
+ }
+ if (!path.endsWith(FragmentDefinition.DOCUMENT_TYPE))
+ {
+ path += FragmentDefinition.DOCUMENT_TYPE;
+ }
+ fragmentDefinition.setPath(path);
+
+ // create the default portlet fragment
+ fragmentDefinition.setRootFragment(newPortletFragment());
+ }
+ catch (ClassCastException e)
+ {
+ String message = "Failed to create fragment definition object for " + this.dynamicPageClass;
+ log.error(message, e);
+ }
+ return fragmentDefinition;
+ }
+
+ /* (non-Javadoc)
* @see org.apache.jetspeed.page.PageManager#newFolder(java.lang.String)
*/
public Folder newFolder(String path)
@@ -302,7 +413,7 @@
}
catch (ClassCastException e)
{
- String message = "Failed to create page object for " + this.pageClass;
+ String message = "Failed to create fragment object for " + this.fragmentClass;
log.error(message, e);
// throw new NodeException(message, e);
}
@@ -323,7 +434,47 @@
}
catch (ClassCastException e)
{
- String message = "Failed to create page object for " + this.pageClass;
+ String message = "Failed to create fragment object for " + this.fragmentClass;
+ log.error(message, e);
+ // throw new NodeException(message, e);
+ }
+ return fragment;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#newFragmentReference()
+ */
+ public FragmentReference newFragmentReference()
+ {
+ FragmentReference fragment = null;
+ try
+ {
+ fragment = (FragmentReference)createObject(this.fragmentReferenceClass);
+ fragment.setId(generator.getNextPeid());
+ }
+ catch (ClassCastException e)
+ {
+ String message = "Failed to create page object for " + this.fragmentReferenceClass;
+ log.error(message, e);
+ // throw new NodeException(message, e);
+ }
+ return fragment;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#newPageFragment()
+ */
+ public PageFragment newPageFragment()
+ {
+ PageFragment fragment = null;
+ try
+ {
+ fragment = (PageFragment)createObject(this.pageFragmentClass);
+ fragment.setId(generator.getNextPeid());
+ }
+ catch (ClassCastException e)
+ {
+ String message = "Failed to create fragment object for " + this.pageFragmentClass;
log.error(message, e);
// throw new NodeException(message, e);
}
@@ -862,6 +1013,9 @@
}
}
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#copyFolder(org.apache.jetspeed.om.folder.Folder, java.lang.String)
+ */
public Folder copyFolder(Folder source, String path)
throws NodeException
{
@@ -923,44 +1077,135 @@
{
// create the new page and copy attributes
Page page = newPage(path);
- page.setTitle(source.getTitle());
- page.setShortTitle(source.getShortTitle());
- page.setVersion(source.getVersion());
- page.setDefaultDecorator(source.getDefaultDecorator(Fragment.LAYOUT), Fragment.LAYOUT);
- page.setDefaultDecorator(source.getDefaultDecorator(Fragment.PORTLET), Fragment.PORTLET);
- page.setSkin(source.getSkin());
+ copyPageAttributes(source, copyIds, page);
page.setHidden(source.isHidden());
+ return page;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#copyPageTemplate(org.apache.jetspeed.om.page.PageTemplate, java.lang.String)
+ */
+ public PageTemplate copyPageTemplate(PageTemplate source, String path)
+ throws NodeException
+ {
+ return copyPageTemplate(source, path, false);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#copyPageTemplate(org.apache.jetspeed.om.page.PageTemplate, java.lang.String, boolean)
+ */
+ public PageTemplate copyPageTemplate(PageTemplate source, String path, boolean copyIds)
+ throws NodeException
+ {
+ // create the new page template and copy attributes
+ PageTemplate pageTemplate = newPageTemplate(path);
+ copyPageAttributes(source, copyIds, pageTemplate);
+ return pageTemplate;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#copyDynamicPage(org.apache.jetspeed.om.page.DynamicPage, java.lang.String)
+ */
+ public DynamicPage copyDynamicPage(DynamicPage source, String path)
+ throws NodeException
+ {
+ return copyDynamicPage(source, path, false);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#copyDynamicPage(org.apache.jetspeed.om.page.DynamicPage, java.lang.String, boolean)
+ */
+ public DynamicPage copyDynamicPage(DynamicPage source, String path, boolean copyIds)
+ throws NodeException
+ {
+ // create the new dynamic page and copy attributes
+ DynamicPage dynamicPage = newDynamicPage(path);
+ copyPageAttributes(source, copyIds, dynamicPage);
+ dynamicPage.setHidden(source.isHidden());
+ dynamicPage.setPageType(source.getPageType());
+ return dynamicPage;
+ }
+
+ public FragmentDefinition copyFragmentDefinition(FragmentDefinition source, String path)
+ throws NodeException
+ {
+ return copyFragmentDefinition(source, path, false);
+ }
+
+ public FragmentDefinition copyFragmentDefinition(FragmentDefinition source, String path, boolean copyIds)
+ throws NodeException
+ {
+ // create the new fragment definition and copy attributes
+ FragmentDefinition fragmentDefinition = newFragmentDefinition(path);
+ copyFragmentsAttributes(source, copyIds, fragmentDefinition);
+ return fragmentDefinition;
+ }
+
+ /**
+ * Copy shared fragments attributes.
+ *
+ * @param source source fragments
+ * @param copyIds flag indicating whether to copy or preserve fragment ids
+ * @param dest destination fragments
+ * @throws NodeException on error creating fragments
+ */
+ protected void copyFragmentsAttributes(BaseFragmentsElement source, boolean copyIds, BaseFragmentsElement dest)
+ throws NodeException
+ {
+ // create the new page and copy attributes
+ dest.setTitle(source.getTitle());
+ dest.setShortTitle(source.getShortTitle());
+ dest.setVersion(source.getVersion());
+
// copy locale specific metadata
- page.getMetadata().copyFields(source.getMetadata().getFields());
-
+ dest.getMetadata().copyFields(source.getMetadata().getFields());
+
// copy security constraints
SecurityConstraints srcSecurity = source.getSecurityConstraints();
if ((srcSecurity != null) && !srcSecurity.isEmpty())
{
SecurityConstraints copiedSecurity = copySecurityConstraints(PAGE_NODE_TYPE, srcSecurity);
- page.setSecurityConstraints(copiedSecurity);
+ dest.setSecurityConstraints(copiedSecurity);
}
+ // copy fragments
+ BaseFragmentElement root = copyFragment(source.getRootFragment(), null, copyIds);
+ dest.setRootFragment(root);
+ }
+
+ /**
+ * Copy shared page attributes.
+ *
+ * @param source source page
+ * @param copyIds flag indicating whether to copy or preserve fragment ids
+ * @param dest destination page
+ * @throws NodeException on error creating fragments
+ */
+ protected void copyPageAttributes(BasePageElement source, boolean copyIds, BasePageElement dest)
+ throws NodeException
+ {
+ // copy fragments attributes
+ copyFragmentsAttributes(source, copyIds, dest);
+
+ // copy page attributes
+ dest.setDefaultDecorator(source.getDefaultDecorator(Fragment.LAYOUT), Fragment.LAYOUT);
+ dest.setDefaultDecorator(source.getDefaultDecorator(Fragment.PORTLET), Fragment.PORTLET);
+ dest.setSkin(source.getSkin());
+
// copy menu definitions
List menus = source.getMenuDefinitions();
if (menus != null)
{
List copiedMenus = copyMenuDefinitions(PAGE_NODE_TYPE, menus);
- page.setMenuDefinitions(copiedMenus);
- }
-
- // copy fragments
- Fragment root = copyFragment(source.getRootFragment(), source.getRootFragment().getName(), copyIds);
- page.setRootFragment(root);
-
- return page;
+ dest.setMenuDefinitions(copiedMenus);
+ }
}
/* (non-Javadoc)
* @see org.apache.jetspeed.page.PageManager#copyFragment(org.apache.jetspeed.om.page.Fragment, java.lang.String)
*/
- public Fragment copyFragment(Fragment source, String name)
+ public BaseFragmentElement copyFragment(BaseFragmentElement source, String name)
throws NodeException
{
return copyFragment(source, name, false);
@@ -969,21 +1214,36 @@
/* (non-Javadoc)
* @see org.apache.jetspeed.page.PageManager#copyFragment(org.apache.jetspeed.om.page.Fragment, java.lang.String, boolean)
*/
- public Fragment copyFragment(Fragment source, String name, boolean copyIds)
+ public BaseFragmentElement copyFragment(BaseFragmentElement source, String name, boolean copyIds)
throws NodeException
{
// create the new fragment and copy attributes
- Fragment copy = newFragment();
+ BaseFragmentElement copy;
+ if (source instanceof Fragment)
+ {
+ copy = newFragment();
+ }
+ else if (source instanceof FragmentReference)
+ {
+ copy = newFragmentReference();
+ }
+ else if (source instanceof PageFragment)
+ {
+ copy = newPageFragment();
+ }
+ else
+ {
+ throw new IllegalArgumentException("Unsupported fragment type: "+((source != null) ? source.getClass().getName() : "null"));
+ }
+
if (copyIds)
{
copy.setId(source.getId());
}
copy.setDecorator(source.getDecorator());
- copy.setName(name);
copy.setShortTitle(source.getShortTitle());
copy.setSkin(source.getSkin());
copy.setTitle(source.getTitle());
- copy.setType(source.getType());
copy.setState(source.getState());
// copy security constraints
@@ -992,7 +1252,7 @@
{
SecurityConstraints copiedSecurity = copySecurityConstraints(FRAGMENT_NODE_TYPE, srcSecurity);
copy.setSecurityConstraints(copiedSecurity);
- }
+ }
// copy properties
Iterator props = source.getProperties().entrySet().iterator();
@@ -1021,17 +1281,39 @@
copy.getPreferences().add(newPref);
}
- // recursively copy fragments
- Iterator fragments = source.getFragments().iterator();
- while (fragments.hasNext())
- {
- Fragment fragment = (Fragment)fragments.next();
- Fragment copiedFragment = copyFragment(fragment, fragment.getName(), copyIds);
- copy.getFragments().add(copiedFragment);
+ if (source instanceof Fragment)
+ {
+ Fragment copyFragment = (Fragment)copy;
+ Fragment sourceFragment = (Fragment)source;
+ if (name == null)
+ {
+ name = sourceFragment.getName();
+ }
+ copyFragment.setName(name);
+ copyFragment.setType(sourceFragment.getType());
+
+ // recursively copy fragments
+ Iterator fragments = sourceFragment.getFragments().iterator();
+ while (fragments.hasNext())
+ {
+ BaseFragmentElement fragment = (BaseFragmentElement)fragments.next();
+ BaseFragmentElement copiedFragment = copyFragment(fragment, null, copyIds);
+ copyFragment.getFragments().add(copiedFragment);
+ }
}
+ else if (source instanceof FragmentReference)
+ {
+ FragmentReference copyFragment = (FragmentReference)copy;
+ FragmentReference sourceFragment = (FragmentReference)source;
+ copyFragment.setRefId(sourceFragment.getRefId());
+ }
+
return copy;
}
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#copyLink(org.apache.jetspeed.om.page.Link, java.lang.String)
+ */
public Link copyLink(Link source, String path)
throws NodeException
{
@@ -1059,6 +1341,9 @@
return link;
}
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#copyPageSecurity(org.apache.jetspeed.om.page.PageSecurity)
+ */
public PageSecurity copyPageSecurity(PageSecurity source)
throws NodeException
{
@@ -1339,18 +1624,27 @@
PageManagerUtils.deepMergeFolder(this, srcFolder, destinationPath, owner, copyIds);
}
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#getUserPage(java.lang.String, java.lang.String)
+ */
public Page getUserPage(String userName, String pageName)
throws PageNotFoundException, NodeException
{
return this.getPage(Folder.USER_FOLDER + userName + Folder.PATH_SEPARATOR + pageName);
}
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#getUserFolder(java.lang.String)
+ */
public Folder getUserFolder(String userName)
throws FolderNotFoundException, InvalidFolderException, NodeException
{
return this.getFolder(Folder.USER_FOLDER + userName);
}
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#folderExists(java.lang.String)
+ */
public boolean folderExists(String folderName)
{
try
@@ -1363,6 +1657,10 @@
}
return true;
}
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#pageExists(java.lang.String)
+ */
public boolean pageExists(String pageName)
{
try
@@ -1376,6 +1674,57 @@
return true;
}
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#pageTemplateExists(java.lang.String)
+ */
+ public boolean pageTemplateExists(String pageName)
+ {
+ try
+ {
+ getPageTemplate(pageName);
+ }
+ catch (Exception e)
+ {
+ return false;
+ }
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#dynamicPageExists(java.lang.String)
+ */
+ public boolean dynamicPageExists(String pageName)
+ {
+ try
+ {
+ getDynamicPage(pageName);
+ }
+ catch (Exception e)
+ {
+ return false;
+ }
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#fragmentDefinitionExists(java.lang.String)
+ */
+ public boolean fragmentDefinitionExists(String name)
+ {
+ try
+ {
+ getFragmentDefinition(name);
+ }
+ catch (Exception e)
+ {
+ return false;
+ }
+ return true;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#linkExists(java.lang.String)
+ */
public boolean linkExists(String linkName)
{
try
@@ -1389,6 +1738,9 @@
return true;
}
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#userFolderExists(java.lang.String)
+ */
public boolean userFolderExists(String userName)
{
try
@@ -1402,6 +1754,9 @@
return true;
}
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#userPageExists(java.lang.String, java.lang.String)
+ */
public boolean userPageExists(String userName, String pageName)
{
try
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/DelegatingPageManager.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/DelegatingPageManager.java?rev=881862&r1=881861&r2=881862&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/DelegatingPageManager.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/DelegatingPageManager.java Wed Nov 18 18:24:48 2009
@@ -22,10 +22,12 @@
import org.apache.jetspeed.om.folder.Folder;
import org.apache.jetspeed.om.folder.FolderNotFoundException;
import org.apache.jetspeed.om.folder.InvalidFolderException;
-import org.apache.jetspeed.om.page.ContentPage;
+import org.apache.jetspeed.om.page.FragmentDefinition;
+import org.apache.jetspeed.om.page.DynamicPage;
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.PageTemplate;
import org.apache.jetspeed.page.document.DocumentException;
import org.apache.jetspeed.page.document.DocumentNotFoundException;
import org.apache.jetspeed.page.document.FailedToDeleteDocumentException;
@@ -63,10 +65,27 @@
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.page.PageManager#getContentPage(java.lang.String)
+ * @see org.apache.jetspeed.page.PageManager#getPageTemplate(java.lang.String)
*/
- public ContentPage getContentPage(String path)
- throws PageNotFoundException, NodeException
+ public PageTemplate getPageTemplate(String id) throws PageNotFoundException, NodeException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#getDynamicPage(java.lang.String)
+ */
+ public DynamicPage getDynamicPage(String id) throws PageNotFoundException, NodeException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#getFragmentDefinition(java.lang.String)
+ */
+ public FragmentDefinition getFragmentDefinition(String id) throws PageNotFoundException, NodeException
{
// TODO Auto-generated method stub
return null;
@@ -144,6 +163,60 @@
}
/* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#getPageTemplates(org.apache.jetspeed.om.folder.Folder)
+ */
+ public NodeSet getPageTemplates(Folder folder) throws NodeException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#getPageTemplate(org.apache.jetspeed.om.folder.Folder, java.lang.String)
+ */
+ public PageTemplate getPageTemplate(Folder folder, String name) throws PageNotFoundException, NodeException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#getDynamicPages(org.apache.jetspeed.om.folder.Folder)
+ */
+ public NodeSet getDynamicPages(Folder folder) throws NodeException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#getDynamicPage(org.apache.jetspeed.om.folder.Folder, java.lang.String)
+ */
+ public DynamicPage getDynamicPage(Folder folder, String name) throws PageNotFoundException, NodeException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#getFragmentDefinitions(org.apache.jetspeed.om.folder.Folder)
+ */
+ public NodeSet getFragmentDefinitions(Folder folder) throws NodeException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#getFragmentDefinition(org.apache.jetspeed.om.folder.Folder, java.lang.String)
+ */
+ public FragmentDefinition getFragmentDefinition(Folder folder, String name) throws PageNotFoundException, NodeException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ /* (non-Javadoc)
* @see org.apache.jetspeed.page.PageManager#getLinks(org.apache.jetspeed.om.folder.Folder)
*/
public NodeSet getLinks(Folder folder) throws NodeException
@@ -186,7 +259,6 @@
PageNotUpdatedException
{
// TODO Auto-generated method stub
-
}
/* (non-Javadoc)
@@ -196,7 +268,60 @@
PageNotRemovedException
{
// TODO Auto-generated method stub
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#updatePageTemplate(org.apache.jetspeed.om.page.PageTemplate)
+ */
+ public void updatePageTemplate(PageTemplate pageTemplate) throws NodeException,
+ PageNotUpdatedException
+ {
+ // TODO Auto-generated method stub
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#removePageTemplate(org.apache.jetspeed.om.page.PageTemplate)
+ */
+ public void removePageTemplate(PageTemplate pageTemplate) throws NodeException,
+ PageNotRemovedException
+ {
+ // TODO Auto-generated method stub
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#updateDynamicPage(org.apache.jetspeed.om.page.DynamicPage)
+ */
+ public void updateDynamicPage(DynamicPage dynamicPage) throws NodeException,
+ PageNotUpdatedException
+ {
+ // TODO Auto-generated method stub
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#removeDynamicPage(org.apache.jetspeed.om.page.DynamicPage)
+ */
+ public void removeDynamicPage(DynamicPage dynamicPage) throws NodeException,
+ PageNotRemovedException
+ {
+ // TODO Auto-generated method stub
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#updateFragmentDefinition(org.apache.jetspeed.om.page.FragmentDefinition)
+ */
+ public void updateFragmentDefinition(FragmentDefinition fragmentDefinition) throws NodeException,
+ PageNotUpdatedException
+ {
+ // TODO Auto-generated method stub
+ }
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.PageManager#removeFragmentDefinition(org.apache.jetspeed.om.page.FragmentDefinition)
+ */
+ public void removeFragmentDefinition(FragmentDefinition fragmentDefinition) throws NodeException,
+ PageNotRemovedException
+ {
+ // TODO Auto-generated method stub
}
/* (non-Javadoc)
@@ -206,7 +331,6 @@
FolderNotUpdatedException
{
// TODO Auto-generated method stub
-
}
/* (non-Javadoc)
@@ -216,7 +340,6 @@
FolderNotUpdatedException
{
// TODO Auto-generated method stub
-
}
/* (non-Javadoc)
@@ -226,7 +349,6 @@
FolderNotRemovedException
{
// TODO Auto-generated method stub
-
}
/* (non-Javadoc)
@@ -236,7 +358,6 @@
LinkNotUpdatedException
{
// TODO Auto-generated method stub
-
}
/* (non-Javadoc)
@@ -246,7 +367,6 @@
LinkNotRemovedException
{
// TODO Auto-generated method stub
-
}
/* (non-Javadoc)
@@ -256,7 +376,6 @@
NodeException, FailedToUpdateDocumentException
{
// TODO Auto-generated method stub
-
}
/* (non-Javadoc)
@@ -266,7 +385,6 @@
NodeException, FailedToDeleteDocumentException
{
// TODO Auto-generated method stub
-
}
public int addPages(Page[] pages)
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/PageManagerUtils.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/PageManagerUtils.java?rev=881862&r1=881861&r2=881862&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/PageManagerUtils.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/PageManagerUtils.java Wed Nov 18 18:24:48 2009
@@ -21,18 +21,21 @@
import javax.security.auth.Subject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.apache.jetspeed.om.common.SecurityConstraints;
import org.apache.jetspeed.om.folder.Folder;
import org.apache.jetspeed.om.folder.FolderNotFoundException;
+import org.apache.jetspeed.om.page.DynamicPage;
+import org.apache.jetspeed.om.page.FragmentDefinition;
import org.apache.jetspeed.om.page.Link;
import org.apache.jetspeed.om.page.Page;
+import org.apache.jetspeed.om.page.PageTemplate;
import org.apache.jetspeed.page.document.NodeException;
import org.apache.jetspeed.security.Role;
import org.apache.jetspeed.security.SubjectHelper;
import org.apache.jetspeed.security.User;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* PageManagerUtils
@@ -128,17 +131,41 @@
Page dstPage = pageManager.copyPage(srcPage, path);
pageManager.updatePage(dstPage);
}
- //Commented, as these were creating the duplicate objects
- /*
- else
+ }
+ Iterator pageTemplates = srcFolder.getPageTemplates().iterator();
+ while (pageTemplates.hasNext())
+ {
+ PageTemplate srcPageTemplate = (PageTemplate)pageTemplates.next();
+ String path = concatenatePaths(destinationPath, srcPageTemplate.getName());
+ if (!pageManager.pageTemplateExists(path))
+ {
+ PageTemplate dstPageTemplate = pageManager.copyPageTemplate(srcPageTemplate, path);
+ pageManager.updatePageTemplate(dstPageTemplate);
+ }
+ }
+ Iterator dynamicPages = srcFolder.getDynamicPages().iterator();
+ while (dynamicPages.hasNext())
+ {
+ DynamicPage srcDynamicPage = (DynamicPage)dynamicPages.next();
+ String path = concatenatePaths(destinationPath, srcDynamicPage.getName());
+ if (!pageManager.dynamicPageExists(path))
{
- path = concatenatePaths(destinationPath, uniqueName + "-" +srcPage.getName());
- Page dstPage = pageManager.copyPage(srcPage, path);
- pageManager.updatePage(dstPage);
+ DynamicPage dstDynamicPage = pageManager.copyDynamicPage(srcDynamicPage, path);
+ pageManager.updateDynamicPage(dstDynamicPage);
+ }
+ }
+ Iterator fragmentDefinitions = srcFolder.getFragmentDefinitions().iterator();
+ while (fragmentDefinitions.hasNext())
+ {
+ FragmentDefinition srcFragmentDefinition = (FragmentDefinition)fragmentDefinitions.next();
+ String path = concatenatePaths(destinationPath, srcFragmentDefinition.getName());
+ if (!pageManager.fragmentDefinitionExists(path))
+ {
+ FragmentDefinition dstFragmentDefinition = pageManager.copyFragmentDefinition(srcFragmentDefinition, path);
+ pageManager.updateFragmentDefinition(dstFragmentDefinition);
}
- */
}
-
+
Iterator links = srcFolder.getLinks().iterator();
while (links.hasNext())
{
@@ -149,16 +176,8 @@
Link dstLink = pageManager.copyLink(srcLink, path);
pageManager.updateLink(dstLink);
}
- //Commented, as these were creating the duplicate objects
- /*
- else
- {
- path = concatenatePaths(destinationPath, uniqueName + "-" +srcLink.getName());
- Link dstLink = pageManager.copyLink(srcLink, path);
- pageManager.updateLink(dstLink);
- }
- */
- }
+ }
+
Iterator folders = srcFolder.getFolders().iterator();
while (folders.hasNext())
{
@@ -257,6 +276,30 @@
Page dstPage = pageManager.copyPage(srcPage, path, copyIds);
pageManager.updatePage(dstPage);
}
+ Iterator pageTemplates = srcFolder.getPageTemplates().iterator();
+ while (pageTemplates.hasNext())
+ {
+ PageTemplate srcPageTemplate = (PageTemplate)pageTemplates.next();
+ String path = PageManagerUtils.concatenatePaths(destinationPath, srcPageTemplate.getName());
+ PageTemplate dstPageTemplate = pageManager.copyPageTemplate(srcPageTemplate, path, copyIds);
+ pageManager.updatePageTemplate(dstPageTemplate);
+ }
+ Iterator dynamicPages = srcFolder.getDynamicPages().iterator();
+ while (dynamicPages.hasNext())
+ {
+ DynamicPage srcDynamicPage = (DynamicPage)dynamicPages.next();
+ String path = PageManagerUtils.concatenatePaths(destinationPath, srcDynamicPage.getName());
+ DynamicPage dstDynamicPage = pageManager.copyDynamicPage(srcDynamicPage, path, copyIds);
+ pageManager.updateDynamicPage(dstDynamicPage);
+ }
+ Iterator fragmentDefinitions = srcFolder.getFragmentDefinitions().iterator();
+ while (fragmentDefinitions.hasNext())
+ {
+ FragmentDefinition srcFragmentDefinition = (FragmentDefinition)fragmentDefinitions.next();
+ String path = PageManagerUtils.concatenatePaths(destinationPath, srcFragmentDefinition.getName());
+ FragmentDefinition dstFragmentDefinition = pageManager.copyFragmentDefinition(srcFragmentDefinition, path, copyIds);
+ pageManager.updateFragmentDefinition(dstFragmentDefinition);
+ }
Iterator links = srcFolder.getLinks().iterator();
while (links.hasNext())
@@ -324,6 +367,39 @@
pageManager.updatePage(dstPage);
}
}
+ Iterator pageTemplates = srcFolder.getPageTemplates().iterator();
+ while (pageTemplates.hasNext())
+ {
+ PageTemplate srcPageTemplate = (PageTemplate)pageTemplates.next();
+ String path = PageManagerUtils.concatenatePaths(destinationPath, srcPageTemplate.getName());
+ if (!pageManager.pageTemplateExists(path))
+ {
+ PageTemplate dstPageTemplate = pageManager.copyPageTemplate(srcPageTemplate, path, copyIds);
+ pageManager.updatePageTemplate(dstPageTemplate);
+ }
+ }
+ Iterator dynamicPages = srcFolder.getDynamicPages().iterator();
+ while (dynamicPages.hasNext())
+ {
+ DynamicPage srcDynamicPage = (DynamicPage)dynamicPages.next();
+ String path = PageManagerUtils.concatenatePaths(destinationPath, srcDynamicPage.getName());
+ if (!pageManager.dynamicPageExists(path))
+ {
+ DynamicPage dstDynamicPage = pageManager.copyDynamicPage(srcDynamicPage, path, copyIds);
+ pageManager.updateDynamicPage(dstDynamicPage);
+ }
+ }
+ Iterator fragmentDefinitions = srcFolder.getFragmentDefinitions().iterator();
+ while (fragmentDefinitions.hasNext())
+ {
+ FragmentDefinition srcFragmentDefinition = (FragmentDefinition)fragmentDefinitions.next();
+ String path = PageManagerUtils.concatenatePaths(destinationPath, srcFragmentDefinition.getName());
+ if (!pageManager.fragmentDefinitionExists(path))
+ {
+ FragmentDefinition dstFragmentDefinition = pageManager.copyFragmentDefinition(srcFragmentDefinition, path, copyIds);
+ pageManager.updateFragmentDefinition(dstFragmentDefinition);
+ }
+ }
Iterator links = srcFolder.getLinks().iterator();
while (links.hasNext())
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org