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 [7/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/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/impl/PageFragmentImpl.java?rev=881862&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageFragmentImpl.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageFragmentImpl.java Wed Nov 18 18:24:48 2009
@@ -0,0 +1,23 @@
+/*
+ * 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.PageFragment;
+
+public class PageFragmentImpl extends BaseFragmentElementImpl implements PageFragment
+{
+}
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/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/impl/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/impl/PageImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageImpl.java Wed Nov 18 18:24:48 2009
@@ -16,22 +16,7 @@
*/
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.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.page.Fragment;
import org.apache.jetspeed.om.page.Page;
-import org.apache.jetspeed.om.page.PageMetadataImpl;
-import org.apache.jetspeed.page.document.impl.DocumentImpl;
-import org.apache.jetspeed.page.impl.DatabasePageManagerUtils;
-import org.apache.ojb.broker.core.proxy.ProxyHelper;
/**
* PageImpl
@@ -39,354 +24,9 @@
* @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
* @version $Id$
*/
-public class PageImpl extends DocumentImpl implements Page
+public class PageImpl extends BaseConcretePageElementImpl implements Page
{
- private Collection fragment;
- private String skin;
- private String defaultLayoutDecorator;
- private String defaultPortletDecorator;
- private List menus;
-
- private PageMenuDefinitionList menuDefinitions;
- private FragmentImpl removedFragment;
-
- public PageImpl()
- {
- super(new PageSecurityConstraintsImpl());
- }
-
- /**
- * 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();
- FragmentImpl rootFragment = (FragmentImpl)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#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)ProxyHelper.getRealObject(getParent());
- if (parentFolder != null)
- {
- return parentFolder.getEffectiveDefaultDecorator(fragmentType);
- }
- }
- return decorator;
- }
-
- /* (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#getRootFragment()
- */
- public Fragment getRootFragment()
- {
- // get singleton fragment; no access checks to
- // be made for root fragment
- if ((fragment != null) && !fragment.isEmpty())
- {
- FragmentImpl rootFragment = (FragmentImpl)fragment.iterator().next();
- if (rootFragment.getPage() == null)
- {
- // set page implementation in root and children fragments
- rootFragment.setPage(this);
- }
- return rootFragment;
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Page#setRootFragment(org.apache.jetspeed.om.page.Fragment)
- */
- public void setRootFragment(Fragment fragment)
- {
- // add new or reuse singleton fragment
- if (fragment instanceof FragmentImpl)
- {
- // create singleton collection or remove existing
- // root fragment and save for reuse
- if (this.fragment == null)
- {
- this.fragment = DatabasePageManagerUtils.createList();
- }
- else if (!this.fragment.isEmpty())
- {
- removedFragment = (FragmentImpl)this.fragment.iterator().next();
- this.fragment.clear();
- }
-
- // add new fragment or copy configuration
- // from previously removed fragment
- if (removedFragment != null)
- {
- // reuse previously removed fragment
- FragmentImpl addFragment = (FragmentImpl)fragment;
- fragment = removedFragment;
- removedFragment = null;
- // TODO: move this logic to copy methods on implementations
- fragment.setName(addFragment.getName());
- fragment.setTitle(addFragment.getTitle());
- fragment.setShortTitle(addFragment.getShortTitle());
- fragment.setType(addFragment.getType());
- fragment.setSkin(addFragment.getSkin());
- fragment.setDecorator(addFragment.getDecorator());
- fragment.setState(addFragment.getState());
- fragment.setSecurityConstraints(addFragment.getSecurityConstraints());
- fragment.getProperties().clear();
- fragment.getProperties().putAll(addFragment.getProperties());
- fragment.setPreferences(addFragment.getPreferences());
- fragment.getFragments().clear();
- fragment.getFragments().addAll(addFragment.getFragments());
- }
- this.fragment.add(fragment);
-
- // set page implementation in root and children fragments
- ((FragmentImpl)fragment).setPage(this);
- }
- else if (fragment == null)
- {
- // delete existing fragment if required, saving
- // removed fragment for later reuse
- if ((this.fragment != null) && !this.fragment.isEmpty())
- {
- removedFragment = (FragmentImpl)this.fragment.iterator().next();
- this.fragment.clear();
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Page#getFragmentById(java.lang.String)
- */
- public Fragment getFragmentById(String id)
- {
- // get fragment by id and check access
- FragmentImpl rootFragment = (FragmentImpl)getRootFragment();
- if (rootFragment != null)
- {
- Fragment fragment = 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 Fragment removeFragmentById(String id)
- {
- // remove fragment by id
- FragmentImpl rootFragment = (FragmentImpl)getRootFragment();
- if (rootFragment != null)
- {
- if (rootFragment.getId().equals(id))
- {
- setRootFragment(null);
- return rootFragment;
- }
- else
- {
- return rootFragment.removeFragmentById(id);
- }
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see org.apache.jetspeed.om.page.Page#getFragmentsByName(java.lang.String)
- */
- public List getFragmentsByName(String name)
- {
- // get fragments by name and filter by access
- FragmentImpl rootFragment = (FragmentImpl)getRootFragment();
- if (rootFragment != null)
- {
- // return immutable filtered fragment list
- return rootFragment.filterFragmentsByAccess(rootFragment.getFragmentsByName(name), false);
- }
- return null;
- }
-
- /* (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);
- }
- }
- }
+ private static final long serialVersionUID = 1L;
/* (non-Javadoc)
* @see org.apache.jetspeed.page.document.Node#getType()
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageMenuDefinitionList.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/PageMenuDefinitionList.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/PageMenuDefinitionList.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageMenuDefinitionList.java Wed Nov 18 18:24:48 2009
@@ -30,11 +30,11 @@
*/
class PageMenuDefinitionList extends AbstractList
{
- private PageImpl page;
+ private BasePageElementImpl page;
private List removedMenuDefinitions;
- PageMenuDefinitionList(PageImpl page)
+ PageMenuDefinitionList(BasePageElementImpl page)
{
super();
this.page = page;
Added: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/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/impl/PageTemplateImpl.java?rev=881862&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageTemplateImpl.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/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.impl;
+
+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;
+
+/**
+ * PageTemplateImpl
+ *
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+public class PageTemplateImpl extends BasePageElementImpl implements PageTemplate
+{
+ private static final long serialVersionUID = 1L;
+
+ /* (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()
+ {
+ 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;
+ }
+ };
+ }
+}
Added: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/AbstractBaseConcretePageElement.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/AbstractBaseConcretePageElement.java?rev=881862&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/AbstractBaseConcretePageElement.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/AbstractBaseConcretePageElement.java Wed Nov 18 18:24:48 2009
@@ -0,0 +1,100 @@
+/*
+ * 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.idgenerator.IdGenerator;
+import org.apache.jetspeed.om.folder.Folder;
+import org.apache.jetspeed.om.page.BaseConcretePageElement;
+import org.apache.jetspeed.om.page.BaseFragmentElement;
+import org.apache.jetspeed.om.page.BaseFragmentValidationListener;
+import org.apache.jetspeed.om.page.PageFragment;
+
+/**
+ * AbstractBaseConcretePageElement
+ *
+ * @version $Id:$
+ */
+public abstract class AbstractBaseConcretePageElement extends AbstractBasePageElement implements BaseConcretePageElement
+{
+ private static final long serialVersionUID = 1L;
+
+ /* (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;
+ }
+
+ /**
+ * 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);
+
+ // default title of concrete pages to name
+ if (getTitle() == null)
+ {
+ setTitle(getTitleName());
+ }
+
+ return dirty;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.psml.AbstractBaseFragmentsElement#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
+ return !(fragmentElement instanceof PageFragment);
+ }
+
+ /* (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/psml/AbstractBaseElement.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/AbstractBaseElement.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/AbstractBaseElement.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/AbstractBaseElement.java Wed Nov 18 18:24:48 2009
@@ -70,7 +70,7 @@
private DocumentHandlerFactory handlerFactory = null;
- private static PermissionFactory pf;
+ protected static PermissionFactory pf;
public static void setPermissionsFactory(PermissionFactory pf)
{
Added: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/AbstractBaseFragmentElement.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/AbstractBaseFragmentElement.java?rev=881862&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/AbstractBaseFragmentElement.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/AbstractBaseFragmentElement.java Wed Nov 18 18:24:48 2009
@@ -0,0 +1,542 @@
+/*
+ * 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 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 org.apache.jetspeed.idgenerator.IdGenerator;
+import org.apache.jetspeed.om.page.BaseFragmentElement;
+import org.apache.jetspeed.om.page.BaseFragmentValidationListener;
+import org.apache.jetspeed.om.page.PageSecurity;
+
+/**
+ * AbstractBaseFragmentElement
+ *
+ * @version $Id:$
+ */
+public abstract class AbstractBaseFragmentElement extends AbstractBaseElement implements BaseFragmentElement
+{
+ private static final long serialVersionUID = 1L;
+
+ private String state = null;
+
+ private String mode = null;
+
+ private String decorator = null;
+
+ private String skin = null;
+
+ private List propertiesList = new ArrayList();
+
+ private List preferences = new ArrayList();
+
+ private Map propertiesMap = new HashMap();
+
+ private String name;
+
+ private AbstractBaseFragmentsElement baseFragmentsElement;
+
+ private boolean dirty = false;
+
+ /**
+ * <p>
+ * Default Constructor.
+ * </p>
+ */
+ public AbstractBaseFragmentElement()
+ {
+ }
+
+ 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 List getPropertiesList()
+ {
+ return (List) this.propertiesList;
+ }
+
+ /**
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getProperty(java.lang.String)
+ */
+ public String getProperty(String propName)
+ {
+ return (String)propertiesMap.get(propName);
+ }
+
+ /**
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#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.BaseFragmentElement#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.BaseFragmentElement#getProperties()
+ */
+ public Map getProperties()
+ {
+ return propertiesMap;
+ }
+
+ /**
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getLayoutRow()
+ */
+ public int getLayoutRow()
+ {
+ return getIntProperty(ROW_PROPERTY_NAME);
+ }
+
+ /**
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#setLayoutRow(int)
+ */
+ public void setLayoutRow(int row)
+ {
+ if (row >= 0)
+ {
+ propertiesMap.put(ROW_PROPERTY_NAME, String.valueOf(row));
+ }
+ else
+ {
+ propertiesMap.remove(ROW_PROPERTY_NAME);
+ }
+ }
+
+ /**
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getLayoutColumn()
+ */
+ public int getLayoutColumn()
+ {
+ return getIntProperty(COLUMN_PROPERTY_NAME);
+ }
+
+ /**
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#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.BaseFragmentElement#getLayoutSizes()
+ */
+ public String getLayoutSizes()
+ {
+ return (String)propertiesMap.get(SIZES_PROPERTY_NAME);
+ }
+
+ /**
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#setLayoutSizes(java.lang.String)
+ */
+ public void setLayoutSizes(String sizes)
+ {
+ if (sizes != null)
+ {
+ propertiesMap.put(SIZES_PROPERTY_NAME, sizes);
+ }
+ else
+ {
+ propertiesMap.remove(SIZES_PROPERTY_NAME);
+ }
+ }
+
+ /**
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getLayoutX()
+ */
+ public float getLayoutX()
+ {
+ return getFloatProperty(X_PROPERTY_NAME);
+ }
+
+ /**
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#setLayoutX(float)
+ */
+ public void setLayoutX(float x)
+ {
+ if (x >= 0.0F)
+ {
+ propertiesMap.put(X_PROPERTY_NAME, String.valueOf(x));
+ }
+ else
+ {
+ propertiesMap.remove(X_PROPERTY_NAME);
+ }
+ }
+
+ /**
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getLayoutY()
+ */
+ public float getLayoutY()
+ {
+ return getFloatProperty(Y_PROPERTY_NAME);
+ }
+
+ /**
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#setLayoutY(float)
+ */
+ public void setLayoutY(float y)
+ {
+ if (y >= 0.0F)
+ {
+ propertiesMap.put(Y_PROPERTY_NAME, String.valueOf(y));
+ }
+ else
+ {
+ propertiesMap.remove(Y_PROPERTY_NAME);
+ }
+ }
+
+ /**
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getLayoutZ()
+ */
+ public float getLayoutZ()
+ {
+ return getFloatProperty(Z_PROPERTY_NAME);
+ }
+
+ /**
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#setLayoutZ(float)
+ */
+ public void setLayoutZ(float z)
+ {
+ if (z >= 0.0F)
+ {
+ propertiesMap.put(Z_PROPERTY_NAME, String.valueOf(z));
+ }
+ else
+ {
+ propertiesMap.remove(Z_PROPERTY_NAME);
+ }
+ }
+
+ /**
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getLayoutWidth()
+ */
+ public float getLayoutWidth()
+ {
+ return getFloatProperty(WIDTH_PROPERTY_NAME);
+ }
+
+ /**
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#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);
+ }
+ }
+
+ /**
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getLayoutHeight()
+ */
+ public float getLayoutHeight()
+ {
+ return getFloatProperty(HEIGHT_PROPERTY_NAME);
+ }
+
+ /**
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#setLayoutHeight(float)
+ */
+ public void setLayoutHeight(float height)
+ {
+ if (height >= 0.0F)
+ {
+ propertiesMap.put(HEIGHT_PROPERTY_NAME, String.valueOf(height));
+ }
+ 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 BaseFragmentElement)
+ {
+ BaseFragmentElement aFragment = (BaseFragmentElement) obj;
+ if ((null != aFragment.getId()) && (null != getId()) && (getId().equals(aFragment.getId())))
+ {
+ isEqual = true;
+ }
+ }
+ return isEqual;
+ }
+
+ /**
+ * <p>
+ * hashCode
+ * </p>
+ *
+ * @see java.lang.Object#hashCode()
+ * @return
+ */
+ public int hashCode()
+ {
+ if (getId() != null)
+ {
+ return (BaseFragmentElement.class.getName() + ":" + getId()).hashCode();
+ }
+ else
+ {
+ return super.hashCode();
+ }
+ }
+
+ /**
+ * <p>
+ * getPreferences
+ * </p>
+ *
+ * @see org.apache.jetspeed.om.page.BaseFragmentElement#getPreferences()
+ * @param name
+ */
+ public List getPreferences()
+ {
+ return preferences;
+ }
+
+ public void setPreferences(List preferences)
+ {
+ this.preferences = preferences;
+ }
+
+ AbstractBaseFragmentsElement getBaseFragmentsElement()
+ {
+ return baseFragmentsElement;
+ }
+
+ void setBaseFragmentsElement(AbstractBaseFragmentsElement baseFragmentsElement)
+ {
+ // set base fragments implementation
+ this.baseFragmentsElement = baseFragmentsElement;
+ if (dirty){
+ baseFragmentsElement.setDirty(dirty);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.psml.AbstractElementImpl#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.psml.AbstractElementImpl#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;
+ }
+
+ /**
+ * 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);
+
+ // generate id if required
+ if (getId() == null)
+ {
+ setId(generator.getNextPeid());
+ dirty = true;
+ }
+
+ // 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;
+ }
+
+ /**
+ * marshalling - notification that this instance is to
+ * be saved to the persistent store
+ */
+ 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);
+ }
+ }
+
+ // notify super class implementation
+ super.marshalling();
+ }
+
+ /**
+ * 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/psml/AbstractBaseFragmentsElement.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/AbstractBaseFragmentsElement.java?rev=881862&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/AbstractBaseFragmentsElement.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/AbstractBaseFragmentsElement.java Wed Nov 18 18:24:48 2009
@@ -0,0 +1,361 @@
+/*
+ * 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 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.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.BaseFragmentElement;
+import org.apache.jetspeed.om.page.BaseFragmentsElement;
+import org.apache.jetspeed.om.page.BaseFragmentValidationListener;
+import org.apache.jetspeed.om.page.BasePageElement;
+import org.apache.jetspeed.om.page.Fragment;
+import org.apache.jetspeed.page.impl.DatabasePageManagerUtils;
+
+/**
+ * AbstractBaseFragmentsElement
+ *
+ * @version $Id:$
+ */
+public abstract class AbstractBaseFragmentsElement extends DocumentImpl implements BaseFragmentsElement
+{
+ private static final long serialVersionUID = 1L;
+
+ private BaseFragmentElement root = null;
+
+ private FragmentElementImpl rootFragmentElementImpl = null;
+
+ private int hashCode;
+
+ /**
+ * <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 = (getClass().getName()+":"+id).hashCode();
+ super.setId(id);
+ }
+
+ /**
+ * <p>
+ * equals
+ * </p>
+ *
+ * @see java.lang.Object#equals(java.lang.Object)
+ * @param obj
+ * @return
+ */
+ public boolean equals( Object obj )
+ {
+ if (obj instanceof BaseFragmentsElement)
+ {
+ BaseFragmentsElement fragmentsElement = (BaseFragmentsElement) obj;
+ return fragmentsElement.getId() != null && getId() != null && getId().equals(fragmentsElement.getId());
+ }
+ return false;
+ }
+
+ /**
+ * <p>
+ * hashCode
+ * </p>
+ *
+ * @see java.lang.Object#hashCode()
+ * @return
+ */
+ public int hashCode()
+ {
+ return hashCode;
+ }
+
+ public BaseFragmentElement getRootFragment()
+ {
+ return this.root;
+ }
+
+ public void setRootFragment( BaseFragmentElement root )
+ {
+ this.root = root;
+ if (root instanceof AbstractBaseFragmentElement)
+ {
+ ((AbstractBaseFragmentElement)root).setBaseFragmentsElement(this);
+ }
+ }
+
+ /**
+ * getRootFragmentElementImpl - get wrapped fragment element
+ *
+ * @return wrapped element
+ */
+ public FragmentElementImpl getRootFragmentElementImpl()
+ {
+ return rootFragmentElementImpl;
+ }
+
+ /**
+ * setRootFragmentElementImpl - set wrapped fragment element
+ *
+ * @param element wrapped element
+ */
+ public void setRootFragmentElementImpl(FragmentElementImpl element)
+ {
+ rootFragmentElementImpl = element;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentsElement#getFragmentById(java.lang.String)
+ */
+ public BaseFragmentElement getFragmentById( String id )
+ {
+ Stack stack = new Stack();
+ if (getRootFragment() != null)
+ {
+ stack.push(getRootFragment());
+ }
+
+ BaseFragmentElement f = (BaseFragmentElement) stack.pop();
+
+ while ((f != null) && (!(f.getId().equals(id))))
+ {
+ if (f instanceof Fragment)
+ {
+ Iterator i = ((Fragment)f).getFragments().iterator();
+
+ while (i.hasNext())
+ {
+ stack.push(i.next());
+ }
+ }
+
+ if (stack.size() > 0)
+ {
+ f = (BaseFragmentElement) stack.pop();
+ }
+ else
+ {
+ f = null;
+ }
+ }
+
+ return f;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentsElement#removeFragmentById(java.lang.String)
+ */
+ public BaseFragmentElement removeFragmentById( String id )
+ {
+ // find fragment by id, tracking fragment parent
+ Map parents = new HashMap();
+ Stack stack = new Stack();
+ if (getRootFragment() != null)
+ {
+ stack.push(getRootFragment());
+ }
+ BaseFragmentElement f = (BaseFragmentElement) stack.pop();
+ while ((f != null) && (!(f.getId().equals(id))))
+ {
+ if (f instanceof Fragment)
+ {
+ Iterator i = ((Fragment)f).getFragments().iterator();
+
+ while (i.hasNext())
+ {
+ BaseFragmentElement child = (BaseFragmentElement)i.next();
+ stack.push(child);
+ parents.put(child, f);
+ }
+ }
+
+ if (stack.size() > 0)
+ {
+ f = (BaseFragmentElement) stack.pop();
+ }
+ else
+ {
+ f = null;
+ }
+ }
+
+ // remove fragment from parent/page root
+ if (f != null)
+ {
+ BaseFragmentElement parent = (BaseFragmentElement)parents.get(f);
+ if (parent != null)
+ {
+ if (parent instanceof Fragment)
+ {
+ if (((Fragment)parent).getFragments().remove(f))
+ {
+ return f;
+ }
+ }
+ }
+ else
+ {
+ if (f == root)
+ {
+ root = null;
+ return f;
+ }
+ }
+ }
+
+ // not found or removed
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.jetspeed.om.page.BaseFragmentsElement#getFragmentsByName(java.lang.String)
+ */
+ public List getFragmentsByName( String name )
+ {
+ List fragments = DatabasePageManagerUtils.createList();
+
+ Stack stack = new Stack();
+ if (getRootFragment() != null)
+ {
+ stack.push(getRootFragment());
+ }
+
+ BaseFragmentElement f = (BaseFragmentElement) stack.pop();
+
+ while (f != null)
+ {
+ if (f instanceof Fragment)
+ {
+ Fragment fragment = (Fragment)f;
+ if ((fragment.getName() != null) && fragment.getName().equals(name))
+ {
+ fragments.add(fragment);
+ }
+
+ Iterator i = fragment.getFragments().iterator();
+
+ while (i.hasNext())
+ {
+ stack.push(i.next());
+ }
+ }
+
+ if (stack.size() > 0)
+ {
+ f = (BaseFragmentElement) stack.pop();
+ }
+ else
+ {
+ f = null;
+ }
+ }
+
+ return fragments;
+ }
+
+ /**
+ * 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);
+
+ // unwrap fragment element
+ root = (AbstractBaseFragmentElement)((rootFragmentElementImpl != null) ? rootFragmentElementImpl.getElement() : null);
+
+ // propagate unmarshalled notification
+ // and page to root fragment
+ if (root != null)
+ {
+ // propagate unmarshalled notification
+ AbstractBaseFragmentElement rootFragment = (AbstractBaseFragmentElement)root;
+ dirty = (rootFragment.unmarshalled(generator) || dirty);
+
+ // propagate page
+ rootFragment.setBaseFragmentsElement(this);
+ }
+
+ return dirty;
+ }
+
+ /**
+ * marshalling - notification that this instance is to
+ * be saved to the persistent store
+ */
+ public void marshalling()
+ {
+ // wrap fragment element
+ rootFragmentElementImpl = ((root != null) ? new FragmentElementImpl(root) : null);
+
+ // propagate marshalling notification
+ // to root fragment
+ if (root != null)
+ {
+ ((AbstractBaseFragmentElement)root).marshalling();
+ }
+
+ // notify super class implementation
+ super.marshalling();
+ }
+
+ /**
+ * Validate fragments.
+ *
+ * @return validated flag
+ */
+ public boolean validateFragments()
+ {
+ // validate fragments using validation listener
+ AbstractBaseFragmentElement rootFragment = (AbstractBaseFragmentElement)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/psml/AbstractBasePageElement.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/AbstractBasePageElement.java?rev=881862&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/AbstractBasePageElement.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/AbstractBasePageElement.java Wed Nov 18 18:24:48 2009
@@ -0,0 +1,197 @@
+/*
+ * 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 java.util.Iterator;
+import java.util.List;
+
+import org.apache.jetspeed.idgenerator.IdGenerator;
+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.BasePageElement;
+
+/**
+ * AbstractBasePageElement
+ *
+ * @version $Id:$
+ */
+public abstract class AbstractBasePageElement extends AbstractBaseFragmentsElement implements BasePageElement
+{
+ private static final long serialVersionUID = 1L;
+
+ private DefaultsImpl defaults = new DefaultsImpl();
+
+ /**
+ * menuDefinitions - menu definitions for page
+ */
+ private List menuDefinitions;
+
+ public String getSkin()
+ {
+ return defaults.getSkin();
+ }
+
+ public void setSkin( String skinName )
+ {
+ defaults.setSkin(skinName);
+ }
+
+ public String getDefaultDecorator( String fragmentType )
+ {
+ return defaults.getDecorator(fragmentType);
+ }
+
+ public void setDefaultDecorator( String decoratorName, String fragmentType )
+ {
+ defaults.setDecorator(fragmentType, decoratorName);
+ }
+
+ public DefaultsImpl getDefaults()
+ {
+ return this.defaults;
+ }
+
+ public void setDefaults( DefaultsImpl defaults )
+ {
+ this.defaults = defaults;
+ }
+
+ /**
+ * 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();
+ }
+ }
+
+ return dirty;
+ }
+
+ /**
+ * marshalling - notification that this instance is to
+ * be saved to the persistent store
+ */
+ public void 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/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/psml/DynamicPageImpl.java?rev=881862&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/DynamicPageImpl.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/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.psml;
+
+import org.apache.jetspeed.om.page.DynamicPage;
+
+/**
+ * Portal dynamic page definition implementation.
+ *
+ * @version $Id:$
+ */
+public class DynamicPageImpl extends AbstractBaseConcretePageElement 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.Node#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/psml/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/psml/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/psml/FilteredFragmentList.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/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/psml/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/psml/FragmentDefinitionImpl.java?rev=881862&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/FragmentDefinitionImpl.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/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.psml;
+
+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;
+
+/**
+ * Portal fragment definition implementation.
+ *
+ * @version $Id:$
+ */
+public class FragmentDefinitionImpl extends AbstractBaseFragmentsElement 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.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()
+ {
+ /* (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;
+ }
+ };
+ }
+}
Added: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/FragmentElementImpl.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/FragmentElementImpl.java?rev=881862&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/FragmentElementImpl.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/psml/FragmentElementImpl.java Wed Nov 18 18:24:48 2009
@@ -0,0 +1,123 @@
+/*
+ * 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 java.io.Serializable;
+
+/**
+ * This class implements a wrapper used to implement
+ * the ordered polymorphic fragment elements collection.
+ *
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id:$
+ */
+public class FragmentElementImpl implements Serializable
+{
+ /**
+ * element - wrapped menu element
+ */
+ private Object element;
+
+ /**
+ * MenuElementImpl - constructor
+ */
+ public FragmentElementImpl()
+ {
+ }
+
+ /**
+ * MenuElementImpl - constructor
+ */
+ public FragmentElementImpl(Object element)
+ {
+ this.element = element;
+ }
+
+ /**
+ * getOption - get wrapped menu element
+ */
+ public Object getElement()
+ {
+ return element;
+ }
+
+ /**
+ * getFragment - get wrapped fragment definition
+ */
+ public FragmentImpl getFragment()
+ {
+ if (element instanceof FragmentImpl)
+ {
+ return (FragmentImpl)element;
+ }
+ return null;
+ }
+
+ /**
+ * setFragment - set wrapped fragment definition
+ *
+ * @param fragment fragment definition
+ */
+ public void setFragment(FragmentImpl fragment)
+ {
+ this.element = fragment;
+ }
+
+ /**
+ * getFragmentReference - get wrapped fragment reference definition
+ */
+ public FragmentReferenceImpl getFragmentReference()
+ {
+ if (element instanceof FragmentReferenceImpl)
+ {
+ return (FragmentReferenceImpl)element;
+ }
+ return null;
+ }
+
+ /**
+ * setFragmentReference - set wrapped fragment reference definition
+ *
+ * @param fragmentReference fragment reference definition
+ */
+ public void setFragmentReference(FragmentReferenceImpl fragmentReference)
+ {
+ this.element = fragmentReference;
+ }
+
+ /**
+ * getPageFragment - get wrapped page fragment definition
+ */
+ public PageFragmentImpl getPageFragment()
+ {
+ if (element instanceof PageFragmentImpl)
+ {
+ return (PageFragmentImpl)element;
+ }
+ return null;
+ }
+
+ /**
+ * setPageFragment - set wrapped page fragment definition
+ *
+ * @param pageFragment page fragment definition
+ */
+ public void setPageFragment(PageFragmentImpl pageFragment)
+ {
+ this.element = pageFragment;
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org