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 [6/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/ ...
Added: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/BaseFragmentElementImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/BaseFragmentElementImpl.java?rev=881862&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/BaseFragmentElementImpl.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/BaseFragmentElementImpl.java Wed Nov 18 18:24:48 2009
@@ -0,0 +1,824 @@
+/*
+ * 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.impl;
+
+import java.security.AccessController;
+import java.security.Permission;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.jetspeed.om.page.BaseFragmentElement;
+import org.apache.jetspeed.om.page.BaseFragmentValidationListener;
+import org.apache.jetspeed.om.page.PageSecurity;
+import org.apache.jetspeed.page.impl.DatabasePageManagerUtils;
+
+/**
+ * BaseFragmentElementImpl
+ *
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+public abstract class BaseFragmentElementImpl extends BaseElementImpl implements BaseFragmentElement
+{
+ private String ojbConcreteClass = getClass().getName();
+ private String fragmentId;
+ private String skin;
+ private String decorator;
+ private String state;
+ private String mode;
+ private int layoutRowProperty = -1;
+ private int layoutColumnProperty = -1;
+ private String layoutSizesProperty;
+ private float layoutXProperty = -1.0F;
+ private float layoutYProperty = -1.0F;
+ private float layoutZProperty = -1.0F;
+ private float layoutWidthProperty = -1.0F;
+ private float layoutHeightProperty = -1.0F;
+ private String extendedPropertyName1;
+ private String extendedPropertyValue1;
+ private String extendedPropertyName2;
+ private String extendedPropertyValue2;
+ private List preferences;
+
+ private FragmentPropertyMap propertiesMap;
+ private FragmentPreferenceList fragmentPreferences;
+ private BaseFragmentsElementImpl baseFragmentsElement;
+
+ public BaseFragmentElementImpl()
+ {
+ super(new FragmentSecurityConstraintsImpl());
+ }
+
+ /**
+ * accessPreferences
+ *
+ * Access mutable persistent collection member for List wrappers.
+ *
+ * @return persistent collection
+ */
+ List accessPreferences()
+ {
+ // create initial collection if necessary
+ if (preferences == null)
+ {
+ preferences = DatabasePageManagerUtils.createList();
+ }
+ return preferences;
+ }
+
+ /**
+ * getBaseFragmentsElement
+ *
+ * Get base fragments implementation that owns fragment.
+ *
+ * @return owning base fragments implementation
+ */
+ BaseFragmentsElementImpl getBaseFragmentsElement()
+ {
+ return baseFragmentsElement;
+ }
+
+ /**
+ * setBaseFragmentsElement
+ *
+ * Set base fragments implementation that owns fragment.
+ *
+ * @param baseFragmentsElement owning base fragments implementation
+ */
+ void setBaseFragmentsElement(BaseFragmentsElementImpl baseFragmentsElement)
+ {
+ // set base fragments implementation
+ this.baseFragmentsElement = baseFragmentsElement;
+ }
+
+ /**
+ * getFragmentById
+ *
+ * Retrieve fragment with matching id from
+ * this or child fragments.
+ *
+ * @param id fragment id to retrieve.
+ * @return matched fragment
+ */
+ public BaseFragmentElement getFragmentById(String id)
+ {
+ // check for match
+ if (getId().equals(id))
+ {
+ return this;
+ }
+ return null;
+ }
+
+ /**
+ * getFragmentsByName
+ *
+ * Retrieve fragments with matching name including
+ * this and child fragments.
+ *
+ * @param name fragment name to retrieve.
+ * @return list of matched fragments
+ */
+ List getFragmentsByName(String name)
+ {
+ List matchedFragments = null;
+ // check for match
+ if ((getName() != null) && getName().equals(name))
+ {
+ if (matchedFragments == null)
+ {
+ matchedFragments = DatabasePageManagerUtils.createList();
+ }
+ matchedFragments.add(this);
+ }
+ return matchedFragments;
+ }
+
+ /**
+ * getPropertyMemberKeys
+ *
+ * Get valid explicit property member keys.
+ *
+ * @return list of property member keys with values
+ */
+ List getPropertyMemberKeys()
+ {
+ List keys = DatabasePageManagerUtils.createList();
+ if (layoutRowProperty >= 0)
+ {
+ keys.add(ROW_PROPERTY_NAME);
+ }
+ if (layoutColumnProperty >= 0)
+ {
+ keys.add(COLUMN_PROPERTY_NAME);
+ }
+ if (layoutSizesProperty != null)
+ {
+ keys.add(SIZES_PROPERTY_NAME);
+ }
+ if (layoutXProperty >= 0.0F)
+ {
+ keys.add(X_PROPERTY_NAME);
+ }
+ if (layoutYProperty >= 0.0F)
+ {
+ keys.add(Y_PROPERTY_NAME);
+ }
+ if (layoutZProperty >= 0.0F)
+ {
+ keys.add(Z_PROPERTY_NAME);
+ }
+ if (layoutWidthProperty >= 0.0F)
+ {
+ keys.add(WIDTH_PROPERTY_NAME);
+ }
+ if (layoutHeightProperty >= 0.0F)
+ {
+ keys.add(HEIGHT_PROPERTY_NAME);
+ }
+ if ((extendedPropertyName1 != null) && (extendedPropertyValue1 != null))
+ {
+ keys.add(extendedPropertyName1);
+ }
+ if ((extendedPropertyName2 != null) && (extendedPropertyValue2 != null))
+ {
+ keys.add(extendedPropertyName2);
+ }
+ return keys;
+ }
+
+ /**
+ * getPropertyMember
+ *
+ * Get explicit property member.
+ *
+ * @param key property name
+ * @return property setting
+ */
+ String getPropertyMember(String key)
+ {
+ // set fragment explicit property member
+ if (key.equals(ROW_PROPERTY_NAME))
+ {
+ if (layoutRowProperty >= 0)
+ {
+ return String.valueOf(layoutRowProperty);
+ }
+ }
+ else if (key.equals(COLUMN_PROPERTY_NAME))
+ {
+ if (layoutColumnProperty >= 0)
+ {
+ return String.valueOf(layoutColumnProperty);
+ }
+ }
+ else if (key.equals(SIZES_PROPERTY_NAME))
+ {
+ return layoutSizesProperty;
+ }
+ else if (key.equals(X_PROPERTY_NAME))
+ {
+ if (layoutXProperty >= 0.0F)
+ {
+ return String.valueOf(layoutXProperty);
+ }
+ }
+ else if (key.equals(Y_PROPERTY_NAME))
+ {
+ if (layoutYProperty >= 0.0F)
+ {
+ return String.valueOf(layoutYProperty);
+ }
+ }
+ else if (key.equals(Z_PROPERTY_NAME))
+ {
+ if (layoutZProperty >= 0.0F)
+ {
+ return String.valueOf(layoutZProperty);
+ }
+ }
+ else if (key.equals(WIDTH_PROPERTY_NAME))
+ {
+ if (layoutWidthProperty >= 0.0F)
+ {
+ return String.valueOf(layoutWidthProperty);
+ }
+ }
+ else if (key.equals(HEIGHT_PROPERTY_NAME))
+ {
+ if (layoutHeightProperty >= 0.0F)
+ {
+ return String.valueOf(layoutHeightProperty);
+ }
+ }
+ else if (key.equals(extendedPropertyName1))
+ {
+ return extendedPropertyValue1;
+ }
+ else if (key.equals(extendedPropertyName2))
+ {
+ return extendedPropertyValue2;
+ }
+ return null;
+ }
+
+ /**
+ * setPropertyMember
+ *
+ * Set explicit property member.
+ *
+ * @param key property name
+ * @param value property setting
+ */
+ void setPropertyMember(String key, String value)
+ {
+ // set fragment explicit property member
+ if (key.equals(ROW_PROPERTY_NAME))
+ {
+ layoutRowProperty = Integer.parseInt(value);
+ }
+ else if (key.equals(COLUMN_PROPERTY_NAME))
+ {
+ layoutColumnProperty = Integer.parseInt(value);
+ }
+ else if (key.equals(SIZES_PROPERTY_NAME))
+ {
+ layoutSizesProperty = value;
+ }
+ else if (key.equals(X_PROPERTY_NAME))
+ {
+ layoutXProperty = Float.parseFloat(value);
+ }
+ else if (key.equals(Y_PROPERTY_NAME))
+ {
+ layoutYProperty = Float.parseFloat(value);
+ }
+ else if (key.equals(Z_PROPERTY_NAME))
+ {
+ layoutZProperty = Float.parseFloat(value);
+ }
+ else if (key.equals(WIDTH_PROPERTY_NAME))
+ {
+ layoutWidthProperty = Float.parseFloat(value);
+ }
+ else if (key.equals(HEIGHT_PROPERTY_NAME))
+ {
+ layoutHeightProperty = Float.parseFloat(value);
+ }
+ else if (key.equals(extendedPropertyName1))
+ {
+ extendedPropertyValue1 = value;
+ }
+ else if (key.equals(extendedPropertyName2))
+ {
+ extendedPropertyValue2 = value;
+ }
+ else if (extendedPropertyName1 == null)
+ {
+ extendedPropertyName1 = key;
+ extendedPropertyValue1 = value;
+ }
+ else if (extendedPropertyName2 == null)
+ {
+ extendedPropertyName2 = key;
+ extendedPropertyValue2 = value;
+ }
+ else
+ {
+ throw new RuntimeException("Unable to set fragment property " + key + ", extended properties already used.");
+ }
+ }
+
+ /**
+ * clearPropertyMember
+ *
+ * Clear explicit property member.
+ *
+ * @param key property name
+ */
+ void clearPropertyMember(String key)
+ {
+ if (key.equals(ROW_PROPERTY_NAME))
+ {
+ layoutRowProperty = -1;
+ }
+ else if (key.equals(COLUMN_PROPERTY_NAME))
+ {
+ layoutColumnProperty = -1;
+ }
+ else if (key.equals(SIZES_PROPERTY_NAME))
+ {
+ layoutSizesProperty = null;
+ }
+ else if (key.equals(X_PROPERTY_NAME))
+ {
+ layoutXProperty = -1.0F;
+ }
+ else if (key.equals(Y_PROPERTY_NAME))
+ {
+ layoutYProperty = -1.0F;
+ }
+ else if (key.equals(Z_PROPERTY_NAME))
+ {
+ layoutZProperty = -1.0F;
+ }
+ else if (key.equals(WIDTH_PROPERTY_NAME))
+ {
+ layoutWidthProperty = -1.0F;
+ }
+ else if (key.equals(HEIGHT_PROPERTY_NAME))
+ {
+ layoutHeightProperty = -1.0F;
+ }
+ else if (key.equals(extendedPropertyName1))
+ {
+ extendedPropertyName1 = null;
+ extendedPropertyValue1 = null;
+ }
+ else if (key.equals(extendedPropertyName2))
+ {
+ extendedPropertyName2 = null;
+ extendedPropertyValue2 = null;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.impl.BaseElementImpl#getEffectivePageSecurity()
+ */
+ public PageSecurity getEffectivePageSecurity()
+ {
+ // delegate to base fragments implementation
+ if (baseFragmentsElement != null)
+ {
+ return baseFragmentsElement.getEffectivePageSecurity();
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.impl.BaseElementImpl#checkPermissions(java.lang.String, int, boolean, boolean)
+ */
+ public void checkPermissions(String path, int mask, boolean checkNodeOnly, boolean checkParentsOnly) throws SecurityException
+ {
+ // 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()
+ {
+ // delegate to base fragments implementation
+ if (baseFragmentsElement != null)
+ {
+ return baseFragmentsElement.getConstraintsEnabled();
+ }
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.common.SecuredResource#getPermissionsEnabled()
+ */
+ public boolean getPermissionsEnabled()
+ {
+ // delegate to base fragments implementation
+ if (baseFragmentsElement != null)
+ {
+ return baseFragmentsElement.getPermissionsEnabled();
+ }
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.impl.BaseElementImpl#getId()
+ */
+ public String getId()
+ {
+ if (fragmentId != null)
+ {
+ return fragmentId;
+ }
+ return super.getId();
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#setId(java.lang.String)
+ */
+ public void setId(String fragmentId)
+ {
+ this.fragmentId = fragmentId;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getSkin()
+ */
+ public String getSkin()
+ {
+ return skin;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#setSkin(java.lang.String)
+ */
+ public void setSkin(String skinName)
+ {
+ this.skin = skinName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getDecorator()
+ */
+ public String getDecorator()
+ {
+ return decorator;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#setDecorator(java.lang.String)
+ */
+ public void setDecorator(String decoratorName)
+ {
+ this.decorator = decoratorName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getState()
+ */
+ public String getState()
+ {
+ return state;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#setState(java.lang.String)
+ */
+ public void setState(String state)
+ {
+ this.state = state;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getMode()
+ */
+ public String getMode()
+ {
+ return mode;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#setMode(java.lang.String)
+ */
+ public void setMode(String mode)
+ {
+ this.mode = mode;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getProperty(java.lang.String)
+ */
+ public String getProperty(String propName)
+ {
+ return (String)getProperties().get(propName);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getIntProperty(java.lang.String)
+ */
+ public int getIntProperty(String propName)
+ {
+ String propValue = (String)getProperties().get(propName);
+ if (propValue != null)
+ {
+ return Integer.parseInt(propValue);
+ }
+ return -1;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getFloatProperty(java.lang.String)
+ */
+ public float getFloatProperty(String propName)
+ {
+ String propValue = (String)getProperties().get(propName);
+ if (propValue != null)
+ {
+ return Float.parseFloat(propValue);
+ }
+ return -1.0F;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getProperties()
+ */
+ public Map getProperties()
+ {
+ // initialize and return writable properties map
+ if (propertiesMap == null)
+ {
+ propertiesMap = new FragmentPropertyMap(this);
+ }
+ return propertiesMap;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getLayoutRow()
+ */
+ public int getLayoutRow()
+ {
+ // get standard int property
+ return getIntProperty(ROW_PROPERTY_NAME);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#setLayoutRow(int)
+ */
+ public void setLayoutRow(int row)
+ {
+ // set standard int property
+ if (row >= 0)
+ {
+ getProperties().put(ROW_PROPERTY_NAME, String.valueOf(row));
+ }
+ else
+ {
+ getProperties().remove(ROW_PROPERTY_NAME);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getLayoutColumn()
+ */
+ public int getLayoutColumn()
+ {
+ // get standard int property
+ return getIntProperty(COLUMN_PROPERTY_NAME);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#setLayoutColumn(int)
+ */
+ public void setLayoutColumn(int column)
+ {
+ // set standard int property
+ if (column >= 0)
+ {
+ getProperties().put(COLUMN_PROPERTY_NAME, String.valueOf(column));
+ }
+ else
+ {
+ getProperties().remove(COLUMN_PROPERTY_NAME);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getLayoutSizes()
+ */
+ public String getLayoutSizes()
+ {
+ // get standard string property
+ return getProperty(SIZES_PROPERTY_NAME);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#setLayoutSizes(java.lang.String)
+ */
+ public void setLayoutSizes(String sizes)
+ {
+ // set standard string property
+ if (sizes != null)
+ {
+ getProperties().put(SIZES_PROPERTY_NAME, sizes);
+ }
+ else
+ {
+ getProperties().remove(SIZES_PROPERTY_NAME);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getLayoutX()
+ */
+ public float getLayoutX()
+ {
+ // get standard float property
+ return getFloatProperty(X_PROPERTY_NAME);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#setLayoutX(float)
+ */
+ public void setLayoutX(float x)
+ {
+ // set standard float property
+ if (x >= 0.0F)
+ {
+ getProperties().put(X_PROPERTY_NAME, String.valueOf(x));
+ }
+ else
+ {
+ getProperties().remove(X_PROPERTY_NAME);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getLayoutY()
+ */
+ public float getLayoutY()
+ {
+ // get standard float property
+ return getFloatProperty(Y_PROPERTY_NAME);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#setLayoutY(float)
+ */
+ public void setLayoutY(float y)
+ {
+ // set standard float property
+ if (y >= 0.0F)
+ {
+ getProperties().put(Y_PROPERTY_NAME, String.valueOf(y));
+ }
+ else
+ {
+ getProperties().remove(Y_PROPERTY_NAME);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getLayoutZ()
+ */
+ public float getLayoutZ()
+ {
+ // get standard float property
+ return getFloatProperty(Z_PROPERTY_NAME);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#setLayoutZ(float)
+ */
+ public void setLayoutZ(float z)
+ {
+ // set standard float property
+ if (z >= 0.0F)
+ {
+ getProperties().put(Z_PROPERTY_NAME, String.valueOf(z));
+ }
+ else
+ {
+ getProperties().remove(Z_PROPERTY_NAME);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getLayoutWidth()
+ */
+ public float getLayoutWidth()
+ {
+ // get standard float property
+ return getFloatProperty(WIDTH_PROPERTY_NAME);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#setLayoutWidth(float)
+ */
+ public void setLayoutWidth(float width)
+ {
+ // set standard float property
+ if (width >= 0.0F)
+ {
+ getProperties().put(WIDTH_PROPERTY_NAME, String.valueOf(width));
+ }
+ else
+ {
+ getProperties().remove(WIDTH_PROPERTY_NAME);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getLayoutHeight()
+ */
+ public float getLayoutHeight()
+ {
+ // get standard float property
+ return getFloatProperty(HEIGHT_PROPERTY_NAME);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#setLayoutHeight(float)
+ */
+ public void setLayoutHeight(float height)
+ {
+ // set standard float property
+ if (height >= 0.0F)
+ {
+ getProperties().put(HEIGHT_PROPERTY_NAME, String.valueOf(height));
+ }
+ else
+ {
+ getProperties().remove(HEIGHT_PROPERTY_NAME);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getPreferences()
+ */
+ public List getPreferences()
+ {
+ // return mutable preferences list
+ // by using list wrapper to manage
+ // element uniqueness
+ if (fragmentPreferences == null)
+ {
+ fragmentPreferences = new FragmentPreferenceList(this);
+ }
+ return fragmentPreferences;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#setPreferences(java.util.List)
+ */
+ public void setPreferences(List preferences)
+ {
+ // set preferences by replacing existing
+ // entries with new elements if new collection
+ // is specified
+ List fragmentPreferences = getPreferences();
+ if (preferences != fragmentPreferences)
+ {
+ // replace all preferences
+ fragmentPreferences.clear();
+ if (preferences != null)
+ {
+ fragmentPreferences.addAll(preferences);
+ }
+ }
+ }
+
+ /**
+ * Validate fragment using specified validation listener.
+ *
+ * @param validationListener validation listener
+ * @return validated flag
+ */
+ protected boolean validateFragments(BaseFragmentValidationListener validationListener)
+ {
+ // validate fragment using validation listener
+ return validationListener.validate(this);
+ }
+}
Added: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/BaseFragmentsElementImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/BaseFragmentsElementImpl.java?rev=881862&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/BaseFragmentsElementImpl.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/BaseFragmentsElementImpl.java Wed Nov 18 18:24:48 2009
@@ -0,0 +1,257 @@
+/*
+ * 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.impl;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.jetspeed.JetspeedActions;
+import org.apache.jetspeed.om.page.BaseFragmentElement;
+import org.apache.jetspeed.om.page.BaseFragmentValidationListener;
+import org.apache.jetspeed.om.page.BaseFragmentsElement;
+import org.apache.jetspeed.page.document.impl.DocumentImpl;
+import org.apache.jetspeed.page.impl.DatabasePageManagerUtils;
+
+/**
+ * BaseFragmentsElementImpl
+ *
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+public abstract class BaseFragmentsElementImpl extends DocumentImpl implements BaseFragmentsElement
+{
+ private String ojbConcreteClass = getClass().getName();
+ private Collection fragment;
+
+ private BaseFragmentElementImpl removedFragment;
+
+ /**
+ * Default constructor to specify security constraints
+ */
+ public BaseFragmentsElementImpl()
+ {
+ super(new PageSecurityConstraintsImpl());
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Page#getRootFragment()
+ */
+ public BaseFragmentElement getRootFragment()
+ {
+ // get singleton fragment; no access checks to
+ // be made for root fragment
+ if ((fragment != null) && !fragment.isEmpty())
+ {
+ BaseFragmentElementImpl rootFragment = (BaseFragmentElementImpl)fragment.iterator().next();
+ if (rootFragment.getBaseFragmentsElement() != this)
+ {
+ // set base fragments implementation in root and children fragments
+ rootFragment.setBaseFragmentsElement(this);
+ }
+ return rootFragment;
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Page#setRootFragment(org.apache.jetspeed.om.page.BaseFragmentElement)
+ */
+ public void setRootFragment(BaseFragmentElement fragment)
+ {
+ // create singleton collection or remove existing
+ // root fragment and save for reuse
+ if (fragment instanceof BaseFragmentElementImpl)
+ {
+ BaseFragmentElementImpl baseFragmentImpl = (BaseFragmentElementImpl)fragment;
+ if (this.fragment == null)
+ {
+ this.fragment = DatabasePageManagerUtils.createList();
+ }
+ else if (!this.fragment.isEmpty())
+ {
+ removedFragment = (BaseFragmentElementImpl)this.fragment.iterator().next();
+ this.fragment.clear();
+ }
+
+ // add new or reuse singleton fragment
+ BaseFragmentElementImpl addFragment = (BaseFragmentElementImpl)fragment;
+ BaseFragmentElementImpl reuseFragment = null;
+ if (fragment instanceof FragmentImpl)
+ {
+ // add new fragment or copy configuration
+ // from previously removed fragment
+ if (removedFragment instanceof FragmentImpl)
+ {
+ // reuse previously removed fragment
+ reuseFragment = removedFragment;
+ addFragment = reuseFragment;
+ removedFragment = null;
+ // TODO: move this logic to copy methods on implementations
+ FragmentImpl fragmentImpl = (FragmentImpl)fragment;
+ FragmentImpl reuseFragmentImpl = (FragmentImpl)reuseFragment;
+ reuseFragmentImpl.setName(fragmentImpl.getName());
+ reuseFragmentImpl.setType(fragmentImpl.getType());
+ reuseFragmentImpl.getFragments().clear();
+ reuseFragmentImpl.getFragments().addAll(fragmentImpl.getFragments());
+ }
+ }
+ else if (fragment instanceof FragmentReferenceImpl)
+ {
+ // add new fragment or copy configuration
+ // from previously removed fragment
+ if (removedFragment instanceof FragmentReferenceImpl)
+ {
+ // reuse previously removed fragment
+ reuseFragment = removedFragment;
+ addFragment = reuseFragment;
+ removedFragment = null;
+ // TODO: move this logic to copy methods on implementations
+ FragmentReferenceImpl fragmentImpl = (FragmentReferenceImpl)fragment;
+ FragmentReferenceImpl reuseFragmentImpl = (FragmentReferenceImpl)reuseFragment;
+ reuseFragmentImpl.setRefId(fragmentImpl.getRefId());
+ }
+ }
+ else if (fragment instanceof PageFragmentImpl)
+ {
+ // add new fragment or copy configuration
+ // from previously removed fragment
+ if (removedFragment instanceof FragmentReferenceImpl)
+ {
+ // reuse previously removed fragment
+ reuseFragment = removedFragment;
+ addFragment = reuseFragment;
+ removedFragment = null;
+ }
+ }
+ if (reuseFragment != null)
+ {
+ // TODO: move this logic to copy methods on implementations
+ reuseFragment.setTitle(baseFragmentImpl.getTitle());
+ reuseFragment.setShortTitle(baseFragmentImpl.getShortTitle());
+ reuseFragment.setSkin(baseFragmentImpl.getSkin());
+ reuseFragment.setDecorator(baseFragmentImpl.getDecorator());
+ reuseFragment.setState(baseFragmentImpl.getState());
+ reuseFragment.setSecurityConstraints(baseFragmentImpl.getSecurityConstraints());
+ reuseFragment.getProperties().clear();
+ reuseFragment.getProperties().putAll(baseFragmentImpl.getProperties());
+ reuseFragment.setPreferences(baseFragmentImpl.getPreferences());
+ }
+ this.fragment.add(addFragment);
+
+ // set base fragments implementation in root and children fragments
+ addFragment.setBaseFragmentsElement(this);
+ }
+ else if (fragment == null)
+ {
+ // delete existing fragment if required, saving
+ // removed fragment for later reuse
+ if ((this.fragment != null) && !this.fragment.isEmpty())
+ {
+ removedFragment = (BaseFragmentElementImpl)this.fragment.iterator().next();
+ this.fragment.clear();
+ }
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Page#getFragmentById(java.lang.String)
+ */
+ public BaseFragmentElement getFragmentById(String id)
+ {
+ // get fragment by id and check access
+ BaseFragmentElementImpl rootFragment = (BaseFragmentElementImpl)getRootFragment();
+ if (rootFragment != null)
+ {
+ BaseFragmentElementImpl fragment = (BaseFragmentElementImpl)rootFragment.getFragmentById(id);
+ if (fragment != null)
+ {
+ try
+ {
+ fragment.checkAccess(JetspeedActions.VIEW);
+ }
+ catch (SecurityException se)
+ {
+ fragment = null;
+ }
+ }
+ return fragment;
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Page#removeFragmentById(java.lang.String)
+ */
+ public BaseFragmentElement removeFragmentById(String id)
+ {
+ // remove fragment by id
+ BaseFragmentElementImpl rootFragment = (BaseFragmentElementImpl)getRootFragment();
+ if (rootFragment != null)
+ {
+ if (rootFragment.getId().equals(id))
+ {
+ setRootFragment(null);
+ return rootFragment;
+ }
+ else if (rootFragment instanceof FragmentImpl)
+ {
+ return ((FragmentImpl)rootFragment).removeFragmentById(id);
+ }
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Page#getFragmentsByName(java.lang.String)
+ */
+ public List getFragmentsByName(String name)
+ {
+ // get fragments by name and filter by access
+ BaseFragmentElementImpl rootFragment = (BaseFragmentElementImpl)getRootFragment();
+ if (rootFragment instanceof FragmentImpl)
+ {
+ // return immutable filtered fragment list
+ FragmentImpl rootFragmentImpl = (FragmentImpl)rootFragment;
+ return rootFragmentImpl.filterFragmentsByAccess(rootFragmentImpl.getFragmentsByName(name), false);
+ }
+ return null;
+ }
+
+ /**
+ * Validate fragments.
+ *
+ * @return validated flag
+ */
+ public boolean validateFragments()
+ {
+ // validate fragments using validation listener
+ BaseFragmentElementImpl rootFragment = (BaseFragmentElementImpl)getRootFragment();
+ if (rootFragment != null)
+ {
+ BaseFragmentValidationListener validationListener = newBaseFragmentValidationListener();
+ return (rootFragment.validateFragments(validationListener) && validationListener.validate());
+ }
+ return false;
+ }
+
+ /**
+ * Fragment validation listener.
+ *
+ * @return validation listener
+ */
+ protected abstract BaseFragmentValidationListener newBaseFragmentValidationListener();
+}
Added: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/BasePageElementImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/BasePageElementImpl.java?rev=881862&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/BasePageElementImpl.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/BasePageElementImpl.java Wed Nov 18 18:24:48 2009
@@ -0,0 +1,217 @@
+/*
+ * 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.impl;
+
+import java.util.Collection;
+import java.util.List;
+
+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.page.BasePageElement;
+import org.apache.jetspeed.om.page.Fragment;
+import org.apache.jetspeed.om.page.PageMetadataImpl;
+import org.apache.jetspeed.page.impl.DatabasePageManagerUtils;
+
+/**
+ * BasePageElementImpl
+ *
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+public abstract class BasePageElementImpl extends BaseFragmentsElementImpl implements BasePageElement
+{
+ private String skin;
+ private String defaultLayoutDecorator;
+ private String defaultPortletDecorator;
+ private List menus;
+
+ private PageMenuDefinitionList menuDefinitions;
+
+ /**
+ * accessMenus
+ *
+ * Access mutable persistent collection member for List wrappers.
+ *
+ * @return persistent collection
+ */
+ List accessMenus()
+ {
+ // create initial collection if necessary
+ if (menus == null)
+ {
+ menus = DatabasePageManagerUtils.createList();;
+ }
+ return menus;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.impl.BaseElementImpl#resetCachedSecurityConstraints()
+ */
+ public void resetCachedSecurityConstraints()
+ {
+ // propagate to super and fragments
+ super.resetCachedSecurityConstraints();
+ BaseFragmentElementImpl rootFragment = (BaseFragmentElementImpl)getRootFragment();
+ if (rootFragment != null)
+ {
+ rootFragment.resetCachedSecurityConstraints();
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.document.impl.NodeImpl#newPageMetadata(java.util.Collection)
+ */
+ public PageMetadataImpl newPageMetadata(Collection fields)
+ {
+ PageMetadataImpl pageMetadata = new PageMetadataImpl(PageMetadataLocalizedFieldImpl.class);
+ pageMetadata.setFields(fields);
+ return pageMetadata;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Page#getSkin()
+ */
+ public String getSkin()
+ {
+ return skin;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Page#setSkin(java.lang.String)
+ */
+ public void setSkin(String skinName)
+ {
+ this.skin = skinName;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Page#getDefaultDecorator(java.lang.String)
+ */
+ public String getDefaultDecorator(String fragmentType)
+ {
+ // retrieve supported decorator types
+ if (fragmentType != null)
+ {
+ if (fragmentType.equals(Fragment.LAYOUT))
+ {
+ return defaultLayoutDecorator;
+ }
+ if (fragmentType.equals(Fragment.PORTLET))
+ {
+ return defaultPortletDecorator;
+ }
+ }
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Page#getDefaultDecorator(java.lang.String,java.lang.String)
+ */
+ public void setDefaultDecorator(String decoratorName, String fragmentType)
+ {
+ // save supported decorator types
+ if (fragmentType != null)
+ {
+ if (fragmentType.equals(Fragment.LAYOUT))
+ {
+ defaultLayoutDecorator = decoratorName;
+ }
+ if (fragmentType.equals(Fragment.PORTLET))
+ {
+ defaultPortletDecorator = decoratorName;
+ }
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Page#getMenuDefinitions()
+ */
+ public List getMenuDefinitions()
+ {
+ // return mutable menu definition list
+ // by using list wrapper to manage
+ // element uniqueness
+ if (menuDefinitions == null)
+ {
+ menuDefinitions = new PageMenuDefinitionList(this);
+ }
+ return menuDefinitions;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Page#newMenuDefinition()
+ */
+ public MenuDefinition newMenuDefinition()
+ {
+ return new PageMenuDefinitionImpl();
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Page#newMenuExcludeDefinition()
+ */
+ public MenuExcludeDefinition newMenuExcludeDefinition()
+ {
+ return new PageMenuExcludeDefinitionImpl();
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Page#newMenuIncludeDefinition()
+ */
+ public MenuIncludeDefinition newMenuIncludeDefinition()
+ {
+ return new PageMenuIncludeDefinitionImpl();
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Page#newMenuOptionsDefinition()
+ */
+ public MenuOptionsDefinition newMenuOptionsDefinition()
+ {
+ return new PageMenuOptionsDefinitionImpl();
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Page#newMenuSeparatorDefinition()
+ */
+ public MenuSeparatorDefinition newMenuSeparatorDefinition()
+ {
+ return new PageMenuSeparatorDefinitionImpl();
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Page#setMenuDefinitions(java.util.List)
+ */
+ public void setMenuDefinitions(List definitions)
+ {
+ // set menu definitions by replacing
+ // existing entries with new elements if
+ // new collection is specified
+ List menuDefinitions = getMenuDefinitions();
+ if (definitions != menuDefinitions)
+ {
+ // replace all menu definitions
+ menuDefinitions.clear();
+ if (definitions != null)
+ {
+ menuDefinitions.addAll(definitions);
+ }
+ }
+ }
+}
Added: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/DynamicPageImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/DynamicPageImpl.java?rev=881862&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/DynamicPageImpl.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/DynamicPageImpl.java Wed Nov 18 18:24:48 2009
@@ -0,0 +1,56 @@
+/*
+ * 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.impl;
+
+import org.apache.jetspeed.om.page.DynamicPage;
+
+/**
+ * DynamicPageImpl
+ *
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+public class DynamicPageImpl extends BaseConcretePageElementImpl implements DynamicPage
+{
+ private static final long serialVersionUID = 1L;
+
+ private String pageType;
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.DynamicPage#getPageType()
+ */
+ public String getPageType()
+ {
+ return pageType;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.DynamicPage#setPageType(java.lang.String)
+ */
+ public void setPageType(String pageType)
+ {
+ this.pageType = pageType;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.document.impl.NodeImpl#getType()
+ */
+ public String getType()
+ {
+ return DOCUMENT_TYPE;
+ }
+}
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/FilteredFragmentList.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/FilteredFragmentList.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/impl/FilteredFragmentList.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/FilteredFragmentList.java Wed Nov 18 18:24:48 2009
@@ -47,10 +47,10 @@
filteredList.add(index, element);
// add object to persistent list
fragment.accessFragments().add(element);
- // maintain page implementation reference
- if ((fragment.getPage() != null) && (element instanceof FragmentImpl))
+ // maintain base fragments implementation reference
+ if ((fragment.getBaseFragmentsElement() != null) && (element instanceof FragmentImpl))
{
- ((FragmentImpl)element).setPage(fragment.getPage());
+ ((FragmentImpl)element).setBaseFragmentsElement(fragment.getBaseFragmentsElement());
}
}
@@ -106,10 +106,10 @@
}
}
}
- // maintain page implementation reference
- if ((fragment.getPage() != null) && (element instanceof FragmentImpl))
+ // maintain base fragments implementation reference
+ 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/impl/FragmentDefinitionImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/FragmentDefinitionImpl.java?rev=881862&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/FragmentDefinitionImpl.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/FragmentDefinitionImpl.java Wed Nov 18 18:24:48 2009
@@ -0,0 +1,93 @@
+/*
+ * 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.impl;
+
+import org.apache.jetspeed.om.page.BaseFragmentElement;
+import org.apache.jetspeed.om.page.FragmentDefinition;
+import org.apache.jetspeed.om.page.FragmentReference;
+import org.apache.jetspeed.om.page.BaseFragmentValidationListener;
+import org.apache.jetspeed.om.page.PageFragment;
+
+/**
+ * FragmentDefinitionImpl
+ *
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+public class FragmentDefinitionImpl extends BaseFragmentsElementImpl implements FragmentDefinition
+{
+ private static final long serialVersionUID = 1L;
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.FragmentDefinition#getDefId()
+ */
+ public String getDefId()
+ {
+ BaseFragmentElement rootFragment = getRootFragment();
+ return ((rootFragment != null) ? rootFragment.getId() : null);
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.document.impl.NodeImpl#getType()
+ */
+ public String getType()
+ {
+ return DOCUMENT_TYPE;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.document.impl.NodeImpl#isHidden()
+ */
+ public boolean isHidden()
+ {
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.page.document.impl.NodeImpl#setHidden(boolean)
+ */
+ public void setHidden(boolean hidden)
+ {
+ throw new UnsupportedOperationException("PageTemplate.setHidden()");
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.impl.BaseFragmentsElementImpl#newBaseFragmentValidationListener()
+ */
+ protected BaseFragmentValidationListener newBaseFragmentValidationListener()
+ {
+ return new BaseFragmentValidationListener()
+ {
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentValidationListener#validate(org.apache.jetspeed.om.page.BaseFragmentElement)
+ */
+ public boolean validate(BaseFragmentElement fragmentElement)
+ {
+ // PageFragments can only appear in PageTemplates; recursive FragmentReference not supported
+ return (!(fragmentElement instanceof PageFragment) && !(fragmentElement instanceof FragmentReference));
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentValidationListener#validate()
+ */
+ public boolean validate()
+ {
+ return true;
+ }
+ };
+ }
+}
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/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/impl/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/impl/FragmentImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/FragmentImpl.java Wed Nov 18 18:24:48 2009
@@ -16,18 +16,15 @@
*/
package org.apache.jetspeed.om.page.impl;
-import java.security.AccessController;
-import java.security.Permission;
import java.util.Iterator;
import java.util.List;
-import java.util.Map;
import org.apache.jetspeed.JetspeedActions;
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.page.impl.DatabasePageManagerUtils;
-import org.apache.jetspeed.security.PermissionFactory;
/**
* FragmentImpl
@@ -35,45 +32,12 @@
* @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
* @version $Id$
*/
-public class FragmentImpl extends BaseElementImpl implements Fragment
+public class FragmentImpl extends BaseFragmentElementImpl implements Fragment
{
private List fragments;
- private String fragmentId;
private String type;
- private String skin;
- private String decorator;
- private String state;
- private String mode;
- private int layoutRowProperty = -1;
- private int layoutColumnProperty = -1;
- private String layoutSizesProperty;
- private float layoutXProperty = -1.0F;
- private float layoutYProperty = -1.0F;
- private float layoutZProperty = -1.0F;
- private float layoutWidthProperty = -1.0F;
- private float layoutHeightProperty = -1.0F;
- private String extendedPropertyName1;
- private String extendedPropertyValue1;
- private String extendedPropertyName2;
- private String extendedPropertyValue2;
- private List preferences;
private FragmentList fragmentsList;
- private FragmentPropertyMap propertiesMap;
- private FragmentPreferenceList fragmentPreferences;
- private PageImpl page;
-
- private static PermissionFactory pf;
-
- public static void setPermissionsFactory(PermissionFactory pf)
- {
- FragmentImpl.pf = pf;
- }
-
- public FragmentImpl()
- {
- super(new FragmentSecurityConstraintsImpl());
- }
/**
* accessFragments
@@ -92,68 +56,29 @@
return fragments;
}
- /**
- * accessPreferences
- *
- * Access mutable persistent collection member for List wrappers.
- *
- * @return persistent collection
- */
- List accessPreferences()
- {
- // create initial collection if necessary
- if (preferences == null)
- {
- preferences = DatabasePageManagerUtils.createList();
- }
- return preferences;
- }
-
- /**
- * getPage
- *
- * Get page implementation that owns fragment.
- *
- * @return owning page implementation
- */
- PageImpl getPage()
- {
- return page;
- }
-
- /**
- * setPage
- *
- * Set page implementation that owns fragment and
- * propagate to all child fragments.
- *
- * @param page owning page implementation
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.impl.BaseFragmentElementImpl#setBaseFragmentsElement(org.apache.jetspeed.om.page.impl.BaseFragmentsElementImpl)
*/
- void setPage(PageImpl page)
+ void setBaseFragmentsElement(BaseFragmentsElementImpl baseFragmentsElement)
{
// set page implementation
- this.page = page;
+ super.setBaseFragmentsElement(baseFragmentsElement);
// propagate to children
if (fragments != null)
{
Iterator fragmentsIter = fragments.iterator();
while (fragmentsIter.hasNext())
{
- ((FragmentImpl)fragmentsIter.next()).setPage(page);
+ ((BaseFragmentElementImpl)fragmentsIter.next()).setBaseFragmentsElement(baseFragmentsElement);
}
}
}
- /**
- * getFragmentById
- *
- * Retrieve fragment with matching id from
- * this or child fragments.
- *
- * @param id fragment id to retrieve.
- * @return matched fragment
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Fragment#getFragmentById(java.lang.String)
+ * @see org.apache.jetspeed.om.page.impl.BaseFragmentElementImpl#getFragmentById(java.lang.String)
*/
- Fragment getFragmentById(String id)
+ public BaseFragmentElement getFragmentById(String id)
{
// check for match
if (getId().equals(id))
@@ -166,7 +91,7 @@
Iterator fragmentsIter = fragments.iterator();
while (fragmentsIter.hasNext())
{
- Fragment matchedFragment = ((FragmentImpl)fragmentsIter.next()).getFragmentById(id);
+ BaseFragmentElement matchedFragment = ((BaseFragmentElementImpl)fragmentsIter.next()).getFragmentById(id);
if (matchedFragment != null)
{
return matchedFragment;
@@ -176,16 +101,10 @@
return null;
}
- /**
- * removeFragmentById
- *
- * Remove fragment with matching id from
- * child fragments.
- *
- * @param id fragment id to remove.
- * @return removed fragment
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.Fragment#removeFragmentById(java.lang.String)
*/
- Fragment removeFragmentById(String id)
+ public BaseFragmentElement removeFragmentById(String id)
{
// remove from deep children
if (fragments != null)
@@ -193,13 +112,16 @@
Iterator fragmentsIter = fragments.iterator();
while (fragmentsIter.hasNext())
{
- FragmentImpl fragment = (FragmentImpl)fragmentsIter.next();
+ BaseFragmentElementImpl fragment = (BaseFragmentElementImpl)fragmentsIter.next();
if (!fragment.getId().equals(id))
{
- Fragment removed = fragment.removeFragmentById(id);
- if (removed != null)
+ if (fragment instanceof FragmentImpl)
{
- return removed;
+ BaseFragmentElement removed = ((FragmentImpl)fragment).removeFragmentById(id);
+ if (removed != null)
+ {
+ return removed;
+ }
}
}
else
@@ -212,34 +134,20 @@
return null;
}
- /**
- * getFragmentsByName
- *
- * Retrieve fragments with matching name including
- * this and child fragments.
- *
- * @param name fragment name to retrieve.
- * @return list of matched fragments
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.impl.BaseFragmentElementImpl#getFragmentsByName(java.lang.String)
*/
List getFragmentsByName(String name)
{
- List matchedFragments = null;
// check for match
- if ((getName() != null) && getName().equals(name))
- {
- if (matchedFragments == null)
- {
- matchedFragments = DatabasePageManagerUtils.createList();
- }
- matchedFragments.add(this);
- }
- // match children
+ List matchedFragments = super.getFragmentsByName(name);
+ // match named children
if (fragments != null)
{
Iterator fragmentsIter = fragments.iterator();
while (fragmentsIter.hasNext())
{
- List matchedChildFragments = ((FragmentImpl)fragmentsIter.next()).getFragmentsByName(name);
+ List matchedChildFragments = ((BaseFragmentElementImpl)fragmentsIter.next()).getFragmentsByName(name);
if (matchedChildFragments != null)
{
if (matchedFragments == null)
@@ -256,293 +164,6 @@
return matchedFragments;
}
- /**
- * getPropertyMemberKeys
- *
- * Get valid explicit property member keys.
- *
- * @return list of property member keys with values
- */
- List getPropertyMemberKeys()
- {
- List keys = DatabasePageManagerUtils.createList();
- if (layoutRowProperty >= 0)
- {
- keys.add(ROW_PROPERTY_NAME);
- }
- if (layoutColumnProperty >= 0)
- {
- keys.add(COLUMN_PROPERTY_NAME);
- }
- if (layoutSizesProperty != null)
- {
- keys.add(SIZES_PROPERTY_NAME);
- }
- if (layoutXProperty >= 0.0F)
- {
- keys.add(X_PROPERTY_NAME);
- }
- if (layoutYProperty >= 0.0F)
- {
- keys.add(Y_PROPERTY_NAME);
- }
- if (layoutZProperty >= 0.0F)
- {
- keys.add(Z_PROPERTY_NAME);
- }
- if (layoutWidthProperty >= 0.0F)
- {
- keys.add(WIDTH_PROPERTY_NAME);
- }
- if (layoutHeightProperty >= 0.0F)
- {
- keys.add(HEIGHT_PROPERTY_NAME);
- }
- if ((extendedPropertyName1 != null) && (extendedPropertyValue1 != null))
- {
- keys.add(extendedPropertyName1);
- }
- if ((extendedPropertyName2 != null) && (extendedPropertyValue2 != null))
- {
- keys.add(extendedPropertyName2);
- }
- return keys;
- }
-
- /**
- * getPropertyMember
- *
- * Get explicit property member.
- *
- * @param key property name
- * @return property setting
- */
- String getPropertyMember(String key)
- {
- // set fragment explicit property member
- if (key.equals(ROW_PROPERTY_NAME))
- {
- if (layoutRowProperty >= 0)
- {
- return String.valueOf(layoutRowProperty);
- }
- }
- else if (key.equals(COLUMN_PROPERTY_NAME))
- {
- if (layoutColumnProperty >= 0)
- {
- return String.valueOf(layoutColumnProperty);
- }
- }
- else if (key.equals(SIZES_PROPERTY_NAME))
- {
- return layoutSizesProperty;
- }
- else if (key.equals(X_PROPERTY_NAME))
- {
- if (layoutXProperty >= 0.0F)
- {
- return String.valueOf(layoutXProperty);
- }
- }
- else if (key.equals(Y_PROPERTY_NAME))
- {
- if (layoutYProperty >= 0.0F)
- {
- return String.valueOf(layoutYProperty);
- }
- }
- else if (key.equals(Z_PROPERTY_NAME))
- {
- if (layoutZProperty >= 0.0F)
- {
- return String.valueOf(layoutZProperty);
- }
- }
- else if (key.equals(WIDTH_PROPERTY_NAME))
- {
- if (layoutWidthProperty >= 0.0F)
- {
- return String.valueOf(layoutWidthProperty);
- }
- }
- else if (key.equals(HEIGHT_PROPERTY_NAME))
- {
- if (layoutHeightProperty >= 0.0F)
- {
- return String.valueOf(layoutHeightProperty);
- }
- }
- else if (key.equals(extendedPropertyName1))
- {
- return extendedPropertyValue1;
- }
- else if (key.equals(extendedPropertyName2))
- {
- return extendedPropertyValue2;
- }
- return null;
- }
-
- /**
- * setPropertyMember
- *
- * Set explicit property member.
- *
- * @param key property name
- * @param value property setting
- */
- void setPropertyMember(String key, String value)
- {
- // set fragment explicit property member
- if (key.equals(ROW_PROPERTY_NAME))
- {
- layoutRowProperty = Integer.parseInt(value);
- }
- else if (key.equals(COLUMN_PROPERTY_NAME))
- {
- layoutColumnProperty = Integer.parseInt(value);
- }
- else if (key.equals(SIZES_PROPERTY_NAME))
- {
- layoutSizesProperty = value;
- }
- else if (key.equals(X_PROPERTY_NAME))
- {
- layoutXProperty = Float.parseFloat(value);
- }
- else if (key.equals(Y_PROPERTY_NAME))
- {
- layoutYProperty = Float.parseFloat(value);
- }
- else if (key.equals(Z_PROPERTY_NAME))
- {
- layoutZProperty = Float.parseFloat(value);
- }
- else if (key.equals(WIDTH_PROPERTY_NAME))
- {
- layoutWidthProperty = Float.parseFloat(value);
- }
- else if (key.equals(HEIGHT_PROPERTY_NAME))
- {
- layoutHeightProperty = Float.parseFloat(value);
- }
- else if (key.equals(extendedPropertyName1))
- {
- extendedPropertyValue1 = value;
- }
- else if (key.equals(extendedPropertyName2))
- {
- extendedPropertyValue2 = value;
- }
- else if (extendedPropertyName1 == null)
- {
- extendedPropertyName1 = key;
- extendedPropertyValue1 = value;
- }
- else if (extendedPropertyName2 == null)
- {
- extendedPropertyName2 = key;
- extendedPropertyValue2 = value;
- }
- else
- {
- throw new RuntimeException("Unable to set fragment property " + key + ", extended properties already used.");
- }
- }
-
- /**
- * clearPropertyMember
- *
- * Clear explicit property member.
- *
- * @param key property name
- */
- void clearPropertyMember(String key)
- {
- if (key.equals(ROW_PROPERTY_NAME))
- {
- layoutRowProperty = -1;
- }
- else if (key.equals(COLUMN_PROPERTY_NAME))
- {
- layoutColumnProperty = -1;
- }
- else if (key.equals(SIZES_PROPERTY_NAME))
- {
- layoutSizesProperty = null;
- }
- else if (key.equals(X_PROPERTY_NAME))
- {
- layoutXProperty = -1.0F;
- }
- else if (key.equals(Y_PROPERTY_NAME))
- {
- layoutYProperty = -1.0F;
- }
- else if (key.equals(Z_PROPERTY_NAME))
- {
- layoutZProperty = -1.0F;
- }
- else if (key.equals(WIDTH_PROPERTY_NAME))
- {
- layoutWidthProperty = -1.0F;
- }
- else if (key.equals(HEIGHT_PROPERTY_NAME))
- {
- layoutHeightProperty = -1.0F;
- }
- else if (key.equals(extendedPropertyName1))
- {
- extendedPropertyName1 = null;
- extendedPropertyValue1 = null;
- }
- else if (key.equals(extendedPropertyName2))
- {
- extendedPropertyName2 = null;
- extendedPropertyValue2 = null;
- }
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.impl.BaseElementImpl#getEffectivePageSecurity()
- */
- public PageSecurity getEffectivePageSecurity()
- {
- // delegate to page implementation
- if (page != null)
- {
- return page.getEffectivePageSecurity();
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.impl.BaseElementImpl#getLogicalPermissionPath()
- */
- public String getLogicalPermissionPath()
- {
- // use page implementation path as base and append name
- if ((page != null) && (getName() != null))
- {
- return page.getLogicalPermissionPath() + Folder.PATH_SEPARATOR + getName();
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.impl.BaseElementImpl#getPhysicalPermissionPath()
- */
- public String getPhysicalPermissionPath()
- {
- // use page implementation path as base and append name
- if ((page != null) && (getName() != null))
- {
- return page.getPhysicalPermissionPath() + Folder.PATH_SEPARATOR + getName();
- }
- return null;
- }
-
/* (non-Javadoc)
* @see org.apache.jetspeed.om.page.impl.BaseElementImpl#resetCachedSecurityConstraints()
*/
@@ -555,62 +176,35 @@
Iterator fragmentsIter = fragments.iterator();
while (fragmentsIter.hasNext())
{
- ((FragmentImpl)fragmentsIter.next()).resetCachedSecurityConstraints();
+ ((BaseFragmentElementImpl)fragmentsIter.next()).resetCachedSecurityConstraints();
}
}
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.impl.BaseElementImpl#checkPermissions(java.lang.String, int, boolean, boolean)
- */
- public void checkPermissions(String path, int mask, boolean checkNodeOnly, boolean checkParentsOnly) throws SecurityException
- {
- // 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)
- {
- return page.getConstraintsEnabled();
- }
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.common.SecuredResource#getPermissionsEnabled()
+ * @see org.apache.jetspeed.om.page.impl.BaseElementImpl#getLogicalPermissionPath()
*/
- public boolean getPermissionsEnabled()
+ public String getLogicalPermissionPath()
{
- if (page != null)
+ // use base fragments implementation path as base and append name
+ if ((getBaseFragmentsElement() != null) && (getName() != null))
{
- return page.getPermissionsEnabled();
+ return getBaseFragmentsElement().getLogicalPermissionPath() + Folder.PATH_SEPARATOR + getName();
}
- return false;
+ return null;
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.impl.BaseElementImpl#getId()
+ * @see org.apache.jetspeed.om.page.impl.BaseElementImpl#getPhysicalPermissionPath()
*/
- public String getId()
+ public String getPhysicalPermissionPath()
{
- if (fragmentId != null)
+ // use base fragments implementation path as base and append name
+ if ((getBaseFragmentsElement() != null) && (getName() != null))
{
- return fragmentId;
+ return getBaseFragmentsElement().getPhysicalPermissionPath() + Folder.PATH_SEPARATOR + getName();
}
- return super.getId();
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#setId(java.lang.String)
- */
- public void setId(String fragmentId)
- {
- this.fragmentId = fragmentId;
+ return null;
}
/* (non-Javadoc)
@@ -630,70 +224,6 @@
}
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getSkin()
- */
- public String getSkin()
- {
- return skin;
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#setSkin(java.lang.String)
- */
- public void setSkin(String skinName)
- {
- this.skin = skinName;
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getDecorator()
- */
- public String getDecorator()
- {
- return decorator;
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#setDecorator(java.lang.String)
- */
- public void setDecorator(String decoratorName)
- {
- this.decorator = decoratorName;
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getState()
- */
- public String getState()
- {
- return state;
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#setState(java.lang.String)
- */
- public void setState(String state)
- {
- this.state = state;
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getMode()
- */
- public String getMode()
- {
- return mode;
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#setMode(java.lang.String)
- */
- public void setMode(String mode)
- {
- this.mode = mode;
- }
-
- /* (non-Javadoc)
* @see org.apache.jetspeed.om.page.Fragment#getFragments()
*/
public List getFragments()
@@ -706,295 +236,30 @@
}
return filterFragmentsByAccess(fragmentsList, true);
}
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getProperty(java.lang.String)
- */
- public String getProperty(String propName)
- {
- return (String)getProperties().get(propName);
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getIntProperty(java.lang.String)
- */
- public int getIntProperty(String propName)
- {
- String propValue = (String)getProperties().get(propName);
- if (propValue != null)
- {
- return Integer.parseInt(propValue);
- }
- return -1;
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getFloatProperty(java.lang.String)
- */
- public float getFloatProperty(String propName)
- {
- String propValue = (String)getProperties().get(propName);
- if (propValue != null)
- {
- return Float.parseFloat(propValue);
- }
- return -1.0F;
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getProperties()
- */
- public Map getProperties()
- {
- // initialize and return writable properties map
- if (propertiesMap == null)
- {
- propertiesMap = new FragmentPropertyMap(this);
- }
- return propertiesMap;
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getLayoutRow()
- */
- public int getLayoutRow()
- {
- // get standard int property
- return getIntProperty(ROW_PROPERTY_NAME);
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#setLayoutRow(int)
- */
- public void setLayoutRow(int row)
- {
- // set standard int property
- if (row >= 0)
- {
- getProperties().put(ROW_PROPERTY_NAME, String.valueOf(row));
- }
- else
- {
- getProperties().remove(ROW_PROPERTY_NAME);
- }
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getLayoutColumn()
- */
- public int getLayoutColumn()
- {
- // get standard int property
- return getIntProperty(COLUMN_PROPERTY_NAME);
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#setLayoutColumn(int)
- */
- public void setLayoutColumn(int column)
- {
- // set standard int property
- if (column >= 0)
- {
- getProperties().put(COLUMN_PROPERTY_NAME, String.valueOf(column));
- }
- else
- {
- getProperties().remove(COLUMN_PROPERTY_NAME);
- }
- }
/* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getLayoutSizes()
- */
- public String getLayoutSizes()
- {
- // get standard string property
- return getProperty(SIZES_PROPERTY_NAME);
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#setLayoutSizes(java.lang.String)
- */
- public void setLayoutSizes(String sizes)
- {
- // set standard string property
- if (sizes != null)
- {
- getProperties().put(SIZES_PROPERTY_NAME, sizes);
- }
- else
- {
- getProperties().remove(SIZES_PROPERTY_NAME);
- }
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getLayoutX()
- */
- public float getLayoutX()
- {
- // get standard float property
- return getFloatProperty(X_PROPERTY_NAME);
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#setLayoutX(float)
- */
- public void setLayoutX(float x)
- {
- // set standard float property
- if (x >= 0.0F)
- {
- getProperties().put(X_PROPERTY_NAME, String.valueOf(x));
- }
- else
- {
- getProperties().remove(X_PROPERTY_NAME);
- }
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getLayoutY()
- */
- public float getLayoutY()
- {
- // get standard float property
- return getFloatProperty(Y_PROPERTY_NAME);
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#setLayoutY(float)
- */
- public void setLayoutY(float y)
- {
- // set standard float property
- if (y >= 0.0F)
- {
- getProperties().put(Y_PROPERTY_NAME, String.valueOf(y));
- }
- else
- {
- getProperties().remove(Y_PROPERTY_NAME);
- }
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getLayoutZ()
- */
- public float getLayoutZ()
- {
- // get standard float property
- return getFloatProperty(Z_PROPERTY_NAME);
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#setLayoutZ(float)
+ * @see org.apache.jetspeed.om.page.impl.BaseFragmentElementImpl#validateFragments(org.apache.jetspeed.om.page.BaseFragmentValidationListener)
*/
- public void setLayoutZ(float z)
+ protected boolean validateFragments(BaseFragmentValidationListener validationListener)
{
- // set standard float property
- if (z >= 0.0F)
+ // validate fragment using validation listener
+ if (!validationListener.validate(this))
{
- getProperties().put(Z_PROPERTY_NAME, String.valueOf(z));
+ return false;
}
- else
- {
- getProperties().remove(Z_PROPERTY_NAME);
- }
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getLayoutWidth()
- */
- public float getLayoutWidth()
- {
- // get standard float property
- return getFloatProperty(WIDTH_PROPERTY_NAME);
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#setLayoutWidth(float)
- */
- public void setLayoutWidth(float width)
- {
- // set standard float property
- if (width >= 0.0F)
- {
- getProperties().put(WIDTH_PROPERTY_NAME, String.valueOf(width));
- }
- else
- {
- getProperties().remove(WIDTH_PROPERTY_NAME);
- }
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getLayoutHeight()
- */
- public float getLayoutHeight()
- {
- // get standard float property
- return getFloatProperty(HEIGHT_PROPERTY_NAME);
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#setLayoutHeight(float)
- */
- public void setLayoutHeight(float height)
- {
- // set standard float property
- if (height >= 0.0F)
- {
- getProperties().put(HEIGHT_PROPERTY_NAME, String.valueOf(height));
- }
- else
- {
- getProperties().remove(HEIGHT_PROPERTY_NAME);
- }
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#isReference()
- */
- public boolean isReference()
- {
- return false; // NYI
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#getPreferences()
- */
- public List getPreferences()
- {
- // return mutable preferences list
- // by using list wrapper to manage
- // element uniqueness
- if (fragmentPreferences == null)
- {
- fragmentPreferences = new FragmentPreferenceList(this);
- }
- return fragmentPreferences;
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Fragment#setPreferences(java.util.List)
- */
- public void setPreferences(List preferences)
- {
- // set preferences by replacing existing
- // entries with new elements if new collection
- // is specified
- List fragmentPreferences = getPreferences();
- if (preferences != fragmentPreferences)
+ // validate fragments using validation listener
+ if (fragments != null)
{
- // replace all preferences
- fragmentPreferences.clear();
- if (preferences != null)
+ Iterator fragmentsIter = fragments.iterator();
+ while (fragmentsIter.hasNext())
{
- fragmentPreferences.addAll(preferences);
+ if (!((BaseFragmentElementImpl)fragmentsIter.next()).validateFragments(validationListener))
+ {
+ return false;
+ }
}
}
+ return true;
}
/**
@@ -1016,7 +281,7 @@
Iterator checkAccessIter = fragments.iterator();
while (checkAccessIter.hasNext())
{
- Fragment fragment = (Fragment)checkAccessIter.next();
+ BaseFragmentElement fragment = (BaseFragmentElement)checkAccessIter.next();
try
{
// check access
@@ -1040,7 +305,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/impl/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/impl/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/impl/FragmentList.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/FragmentList.java Wed Nov 18 18:24:48 2009
@@ -42,9 +42,9 @@
// implement for modifiable AbstractList:
// add and maintain page 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());
}
}
@@ -74,9 +74,9 @@
// implement for modifiable AbstractList:
// set and maintain page 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;
}
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/FragmentPreferenceList.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/FragmentPreferenceList.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/impl/FragmentPreferenceList.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/FragmentPreferenceList.java Wed Nov 18 18:24:48 2009
@@ -28,11 +28,11 @@
*/
class FragmentPreferenceList extends AbstractList
{
- private FragmentImpl fragment;
+ private BaseFragmentElementImpl fragment;
private List removedPreferences;
- FragmentPreferenceList(FragmentImpl fragment)
+ FragmentPreferenceList(BaseFragmentElementImpl fragment)
{
super();
this.fragment = fragment;
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/FragmentPropertyMap.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/FragmentPropertyMap.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/impl/FragmentPropertyMap.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/FragmentPropertyMap.java Wed Nov 18 18:24:48 2009
@@ -32,10 +32,10 @@
*/
class FragmentPropertyMap extends AbstractMap
{
- private FragmentImpl fragment;
+ private BaseFragmentElementImpl fragment;
private FragmentPropertiesEntrySet entrySet;
- FragmentPropertyMap(FragmentImpl fragment)
+ FragmentPropertyMap(BaseFragmentElementImpl fragment)
{
super();
this.fragment = fragment;
Added: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/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/impl/FragmentReferenceImpl.java?rev=881862&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/FragmentReferenceImpl.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/FragmentReferenceImpl.java Wed Nov 18 18:24:48 2009
@@ -0,0 +1,40 @@
+/*
+ * 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.impl;
+
+import org.apache.jetspeed.om.page.FragmentReference;
+
+public class FragmentReferenceImpl extends BaseFragmentElementImpl implements FragmentReference
+{
+ private String fragmentRefId;
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.FragmentReference#getRefId()
+ */
+ public String getRefId()
+ {
+ return fragmentRefId;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.FragmentReference#setRefId(java.lang.String)
+ */
+ public void setRefId(String refId)
+ {
+ this.fragmentRefId = refId;
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org