Author: weaver Date: Thu Nov 3 09:39:17 2005 New Revision: 330589 URL: http://svn.apache.org/viewcvs?rev=330589&view=rev Log: JS2-383: Supporting psml level preference settings.
http://issues.apache.org/jira/browse/JS2-383 Added: portals/jetspeed-2/trunk/components/page-manager/src/test/fragment-test.xml (with props) portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestMappings.java (with props) portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/portlet/impl/FragmentPortletDefinition.java (with props) portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/preference/impl/FragmentPortletPreferenceSet.java (with props) portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/preference/impl/FragmentPreference.java (with props) Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/JETSPEED-INF/castor/page-mapping.xml portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderImpl.java portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentImpl.java portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/FragmentImpl.java portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorFragmentImpl.java portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletRendererImpl.java portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/RenderingJobImpl.java portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/pipeline/valve/impl/ActionValveImpl.java portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/components/portletentity/PortletEntityImpl.java portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/Fragment.java portals/jetspeed-2/trunk/xdocs/psml.xml Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/JETSPEED-INF/castor/page-mapping.xml URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/JETSPEED-INF/castor/page-mapping.xml?rev=330589&r1=330588&r2=330589&view=diff ============================================================================== --- portals/jetspeed-2/trunk/components/page-manager/src/java/JETSPEED-INF/castor/page-mapping.xml (original) +++ portals/jetspeed-2/trunk/components/page-manager/src/java/JETSPEED-INF/castor/page-mapping.xml Thu Nov 3 09:39:17 2005 @@ -34,13 +34,13 @@ <bind-xml name="fragment"/> </field> - <field name="metadataFields" + <field name="metadataFields" type="org.apache.jetspeed.om.page.PageLocalizedFieldImpl" collection="collection"> <bind-xml name="metadata"/> </field> - <field name="menuDefinitions" + <field name="menuDefinitions" type="org.apache.jetspeed.om.folder.psml.MenuDefinitionImpl" collection="collection"> <bind-xml name="menu"/> @@ -50,7 +50,7 @@ <class name="org.apache.jetspeed.om.page.PageLocalizedFieldImpl"> <map-to xml="metadata"/> - <field name="name" type="java.lang.String"> + <field name="name" type="java.lang.String"> <bind-xml name="name" node="attribute"/> </field> @@ -113,6 +113,11 @@ type="org.apache.jetspeed.om.page.psml.PropertyImpl" collection="vector"> <bind-xml name="property"/> </field> + + <field name="preferences" + type="org.apache.jetspeed.om.preference.impl.FragmentPreference" collection="arraylist"> + <bind-xml name="preference"/> + </field> </class> <class name="org.apache.jetspeed.om.page.psml.LinkImpl"> @@ -143,7 +148,7 @@ <bind-xml name="short-title"/> </field> - <field name="metadataFields" + <field name="metadataFields" type="org.apache.jetspeed.om.page.PageLocalizedFieldImpl" collection="collection"> <bind-xml name="metadata"/> @@ -180,13 +185,13 @@ <bind-xml name="document-order"/> </field> - <field name="metadataFields" + <field name="metadataFields" type="org.apache.jetspeed.om.page.PageLocalizedFieldImpl" collection="collection"> <bind-xml name="metadata"/> </field> - <field name="menuDefinitions" + <field name="menuDefinitions" type="org.apache.jetspeed.om.folder.psml.MenuDefinitionImpl" collection="collection"> <bind-xml name="menu"/> @@ -236,13 +241,13 @@ <bind-xml name="short-title"/> </field> - <field name="metadataFields" + <field name="metadataFields" type="org.apache.jetspeed.om.page.PageLocalizedFieldImpl" collection="collection"> <bind-xml name="metadata"/> </field> - <field name="menuElementImpls" + <field name="menuElementImpls" type="org.apache.jetspeed.om.folder.psml.MenuElementImpl" collection="collection"> <bind-xml name="menu-element"/> @@ -329,7 +334,7 @@ <bind-xml node="text"/> </field> - <field name="metadataFields" + <field name="metadataFields" type="org.apache.jetspeed.om.page.PageLocalizedFieldImpl" collection="collection"> <bind-xml name="metadata"/> @@ -391,7 +396,7 @@ <class name="org.apache.jetspeed.om.page.psml.SecurityConstraintsImpl"> <map-to xml="security-constraints"/> - <field name="owner" type="java.lang.String"> + <field name="owner" type="java.lang.String"> <bind-xml name="owner"/> </field> @@ -411,15 +416,15 @@ <class name="org.apache.jetspeed.om.page.psml.SecurityConstraintImpl"> <map-to xml="security-constraint"/> - <field name="users" type="java.lang.String"> + <field name="users" type="java.lang.String"> <bind-xml name="users"/> </field> - <field name="roles" type="java.lang.String"> + <field name="roles" type="java.lang.String"> <bind-xml name="roles"/> </field> - <field name="groups" type="java.lang.String"> + <field name="groups" type="java.lang.String"> <bind-xml name="groups"/> </field> @@ -447,7 +452,7 @@ <class name="org.apache.jetspeed.om.page.psml.SecurityConstraintsDefImpl"> <map-to xml="security-constraints-def"/> - <field name="name" type="java.lang.String"> + <field name="name" type="java.lang.String"> <bind-xml name="name" node="attribute"/> </field> @@ -455,6 +460,25 @@ type="org.apache.jetspeed.om.page.psml.SecurityConstraintImpl" collection="collection"> <bind-xml name="security-constraint"/> + </field> + </class> + + + <class name="org.apache.jetspeed.om.preference.impl.FragmentPreference"> + <map-to xml="preference"/> + + <field name="name" type="string"> + <bind-xml name="name" node="attribute"/> + </field> + + <field name="readOnly" type="boolean"> + <bind-xml name="readOnly" node="attribute"/> + </field> + + <field name="valueList" + type="java.lang.String" + collection="arraylist" > + <bind-xml name="value" node="element" /> </field> </class> Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderImpl.java URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderImpl.java?rev=330589&r1=330588&r2=330589&view=diff ============================================================================== --- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderImpl.java (original) +++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderImpl.java Thu Nov 3 09:39:17 2005 @@ -142,7 +142,7 @@ pageMetadata.setFields(fields); return pageMetadata; } - + /* (non-Javadoc) * @see org.apache.jetspeed.om.folder.Folder#isRootFolder() */ @@ -157,7 +157,7 @@ */ public List getDocumentOrder() { - return null; //NYI + return null; // NYI } /* (non-Javadoc) @@ -340,5 +340,5 @@ public String getType() { return FOLDER_TYPE; - } +} } Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java?rev=330589&r1=330588&r2=330589&view=diff ============================================================================== --- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java (original) +++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/ContentFragmentImpl.java Thu Nov 3 09:39:17 2005 @@ -148,7 +148,7 @@ */ public Map getProperties() { - + return fragment.getProperties(); } @@ -663,6 +663,12 @@ + } + + + public List getPreferences() + { + return fragment.getPreferences(); } } Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentImpl.java URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentImpl.java?rev=330589&r1=330588&r2=330589&view=diff ============================================================================== --- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentImpl.java (original) +++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentImpl.java Thu Nov 3 09:39:17 2005 @@ -134,10 +134,10 @@ if (properties != null) { return (String)properties.get(propName); - } + } return null; } - + /* (non-Javadoc) * @see org.apache.jetspeed.om.page.Fragment#getProperty(java.lang.String,java.lang.String) */ @@ -149,11 +149,11 @@ if (propValue != null) { return Integer.parseInt(propValue); - } + } } return -1; } - + /* (non-Javadoc) * @see org.apache.jetspeed.om.page.Fragment#getProperties() */ @@ -163,7 +163,7 @@ if (properties == null) { properties = new HashMap(4); - } + } return properties; } @@ -175,7 +175,7 @@ // get standard int property return getIntProperty(ROW_PROPERTY_NAME); } - + /* (non-Javadoc) * @see org.apache.jetspeed.om.page.Fragment#setLayoutRow(int) */ @@ -185,13 +185,13 @@ if (row >= 0) { getProperties().put(ROW_PROPERTY_NAME, String.valueOf(row)); - } + } else if (properties != null) { properties.remove(ROW_PROPERTY_NAME); } } - + /* (non-Javadoc) * @see org.apache.jetspeed.om.page.Fragment#getLayoutColumn() */ @@ -210,13 +210,13 @@ if (column >= 0) { getProperties().put(COLUMN_PROPERTY_NAME, String.valueOf(column)); - } + } else if (properties != null) { properties.remove(COLUMN_PROPERTY_NAME); } } - + /* (non-Javadoc) * @see org.apache.jetspeed.om.page.Fragment#getLayoutSizes() */ @@ -225,7 +225,7 @@ // get standard string property return getProperty(SIZES_PROPERTY_NAME); } - + /* (non-Javadoc) * @see org.apache.jetspeed.om.page.Fragment#setLayoutSizes(java.lang.String) */ @@ -235,7 +235,7 @@ if (sizes != null) { getProperties().put(SIZES_PROPERTY_NAME, sizes); - } + } else if (properties != null) { properties.remove(SIZES_PROPERTY_NAME); @@ -249,14 +249,14 @@ { return false; // NYI } - + /* (non-Javadoc) * @see org.apache.jetspeed.om.page.Fragment#clone() */ public Object clone() throws CloneNotSupportedException { return null; // NYI - } + } /* (non-Javadoc) * @see org.apache.ojb.broker.PersistenceBrokerAware#beforeInsert(org.apache.ojb.broker.PersistenceBroker) @@ -275,7 +275,7 @@ // execute update hook afterUpdate(broker); } - + /* (non-Javadoc) * @see org.apache.ojb.broker.PersistenceBrokerAware#beforeUpdate(org.apache.ojb.broker.PersistenceBroker) */ @@ -302,7 +302,7 @@ if (propName.equals(ROW_PROPERTY_NAME)) { layoutRowProperty = Integer.parseInt(propValue); - } + } else if (propName.equals(COLUMN_PROPERTY_NAME)) { layoutColumnProperty = Integer.parseInt(propValue); @@ -333,7 +333,13 @@ { // nothing to do by default } - + + public List getPreferences() + { + // TODO This needs to be implemented in the DB version + throw new UnsupportedOperationException("Not Yet Implemented"); // NYI + } + /* (non-Javadoc) * @see org.apache.ojb.broker.PersistenceBrokerAware#beforeDelete(org.apache.ojb.broker.PersistenceBroker) */ @@ -341,6 +347,7 @@ { // nothing to do by default } + /* (non-Javadoc) * @see org.apache.ojb.broker.PersistenceBrokerAware#afterDelete(org.apache.ojb.broker.PersistenceBroker) Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/FragmentImpl.java URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/FragmentImpl.java?rev=330589&r1=330588&r2=330589&view=diff ============================================================================== --- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/FragmentImpl.java (original) +++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/FragmentImpl.java Thu Nov 3 09:39:17 2005 @@ -44,7 +44,9 @@ private List fragments = new Vector(); private List propertiesList = new Vector(); - + + private List preferences = new ArrayList(); + private Map propertiesMap = new HashMap(); private String name; @@ -108,7 +110,7 @@ public Vector getPropertiesList() { return (Vector) this.propertiesList; - } + } /* (non-Javadoc) * @see org.apache.jetspeed.om.page.Fragment#getProperty(java.lang.String,java.lang.String) @@ -116,20 +118,20 @@ public String getProperty(String propName) { return (String)propertiesMap.get(propName); - } + } /* (non-Javadoc) * @see org.apache.jetspeed.om.page.Fragment#getProperty(java.lang.String,java.lang.String) */ public int getIntProperty(String propName) - { + { String prop = (String)propertiesMap.get(propName); if (prop != null) - { + { return Integer.parseInt(prop); - } + } return -1; - } + } /* (non-Javadoc) * @see org.apache.jetspeed.om.page.Fragment#getProperties() @@ -137,7 +139,7 @@ public Map getProperties() { return propertiesMap; - } + } /* (non-Javadoc) * @see org.apache.jetspeed.om.page.Fragment#getLayoutRow() @@ -148,7 +150,7 @@ if (prop != null) { return Integer.parseInt(prop); - } + } return -1; } @@ -162,10 +164,10 @@ propertiesMap.put(ROW_PROPERTY_NAME, String.valueOf(row)); } else - { + { propertiesMap.remove(ROW_PROPERTY_NAME); + } } - } /* (non-Javadoc) * @see org.apache.jetspeed.om.page.Fragment#getLayoutColumn() @@ -176,7 +178,7 @@ if (prop != null) { return Integer.parseInt(prop); - } + } return -1; } @@ -190,10 +192,10 @@ propertiesMap.put(COLUMN_PROPERTY_NAME, String.valueOf(column)); } else - { + { propertiesMap.remove(COLUMN_PROPERTY_NAME); + } } - } /* (non-Javadoc) * @see org.apache.jetspeed.om.page.Fragment#getLayoutSizes() @@ -201,7 +203,7 @@ public String getLayoutSizes() { return (String)propertiesMap.get(SIZES_PROPERTY_NAME); - } + } /* (non-Javadoc) * @see org.apache.jetspeed.om.page.Fragment#setLayoutSizes(java.lang.String) @@ -213,10 +215,10 @@ propertiesMap.put(SIZES_PROPERTY_NAME, sizes); } else - { + { propertiesMap.remove(SIZES_PROPERTY_NAME); + } } - } public Object clone() throws java.lang.CloneNotSupportedException { @@ -298,7 +300,17 @@ } - /** + public List getPreferences() + { + return preferences; + } + + public void setPreferences(List preferences) + { + this.preferences = preferences; + } + + /** * unmarshalled - notification that this instance has been * loaded from the persistent store */ @@ -368,4 +380,4 @@ // notify super class implementation super.marshalling(); } -} +} \ No newline at end of file Added: portals/jetspeed-2/trunk/components/page-manager/src/test/fragment-test.xml URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/test/fragment-test.xml?rev=330589&view=auto ============================================================================== --- portals/jetspeed-2/trunk/components/page-manager/src/test/fragment-test.xml (added) +++ portals/jetspeed-2/trunk/components/page-manager/src/test/fragment-test.xml Thu Nov 3 09:39:17 2005 @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<fragment id="test" type="portlet" name="demo::BookmarkPortlet"> + <property name="row" value="2" layout="TwoColumns"/> + <property name="column" value="1" layout="TwoColumns"/> + <preference name="Google" readOnly="false"> + <value>http://www.google.com</value> + </preference> +</fragment> \ No newline at end of file Propchange: portals/jetspeed-2/trunk/components/page-manager/src/test/fragment-test.xml ------------------------------------------------------------------------------ svn:eol-style = native Added: portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestMappings.java URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestMappings.java?rev=330589&view=auto ============================================================================== --- portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestMappings.java (added) +++ portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestMappings.java Thu Nov 3 09:39:17 2005 @@ -0,0 +1,40 @@ +package org.apache.jetspeed.page; + +import java.util.Iterator; + +import junit.framework.TestCase; + +import org.apache.jetspeed.om.page.Fragment; +import org.apache.pluto.om.common.Preference; +import org.exolab.castor.mapping.Mapping; +import org.exolab.castor.xml.Unmarshaller; +import org.xml.sax.InputSource; + +public class TestMappings extends TestCase +{ + + public void testFragmentMapping() throws Exception + { + Mapping mapping = new Mapping(); + + // 1. Load the mapping information from the file + mapping.loadMapping(new InputSource(getClass().getClassLoader().getResourceAsStream( + "JETSPEED-INF/castor/page-mapping.xml"))); + + // 2. Unmarshal the data + Unmarshaller unmar = new Unmarshaller(mapping); + Fragment fragment = (Fragment) unmar.unmarshal(new InputSource(getClass().getClassLoader().getResourceAsStream( + "fragment-test.xml"))); + + assertNotNull(fragment); + assertEquals(1, fragment.getPreferences().size()); + Preference pref = (Preference) fragment.getPreferences().get(0); + + assertEquals("Google", pref.getName()); + assertEquals(false, pref.isReadOnly()); + Iterator itr = pref.getValues(); + String value = (String )itr.next(); + assertEquals("http://www.google.com", value ); + + } +} Propchange: portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestMappings.java ------------------------------------------------------------------------------ svn:eol-style = native Modified: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorFragmentImpl.java URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorFragmentImpl.java?rev=330589&r1=330588&r2=330589&view=diff ============================================================================== --- portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorFragmentImpl.java (original) +++ portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorFragmentImpl.java Thu Nov 3 09:39:17 2005 @@ -302,5 +302,11 @@ public Object clone() throws CloneNotSupportedException { return null; + } + + public List getPreferences() + { + // TODO Auto-generated method stub + return null; } } Modified: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletRendererImpl.java URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletRendererImpl.java?rev=330589&r1=330588&r2=330589&view=diff ============================================================================== --- portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletRendererImpl.java (original) +++ portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletRendererImpl.java Thu Nov 3 09:39:17 2005 @@ -32,6 +32,7 @@ import org.apache.jetspeed.components.portletentity.PortletEntityNotStoredException; import org.apache.jetspeed.container.window.FailedToRetrievePortletWindow; import org.apache.jetspeed.container.window.PortletWindowAccessor; +import org.apache.jetspeed.om.common.portlet.MutablePortletEntity; import org.apache.jetspeed.om.page.ContentFragment; import org.apache.jetspeed.request.RequestContext; import org.apache.jetspeed.util.JetspeedObjectID; @@ -217,7 +218,7 @@ + fragment.getId() + ", " + fragment.getName()); } PortletEntity portletEntity = portletWindow.getPortletEntity(); - + ((MutablePortletEntity)portletEntity).setFragment(fragment); return portletWindow; } Modified: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/RenderingJobImpl.java URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/RenderingJobImpl.java?rev=330589&r1=330588&r2=330589&view=diff ============================================================================== --- portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/RenderingJobImpl.java (original) +++ portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/RenderingJobImpl.java Thu Nov 3 09:39:17 2005 @@ -24,6 +24,7 @@ import org.apache.jetspeed.PortalReservedParameters; import org.apache.jetspeed.aggregator.PortletContent; import org.apache.jetspeed.aggregator.RenderingJob; +import org.apache.jetspeed.om.common.portlet.MutablePortletEntity; import org.apache.jetspeed.om.page.ContentFragment; import org.apache.jetspeed.request.RequestContext; import org.apache.pluto.PortletContainer; @@ -62,7 +63,8 @@ this.response = response; this.requestContext = requestContext; this.window = window; - this.portletContent = portletContent; + this.portletContent = portletContent; + ((MutablePortletEntity)window.getPortletEntity()).setFragment(fragment); } Modified: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/pipeline/valve/impl/ActionValveImpl.java URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/pipeline/valve/impl/ActionValveImpl.java?rev=330589&r1=330588&r2=330589&view=diff ============================================================================== --- portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/pipeline/valve/impl/ActionValveImpl.java (original) +++ portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/pipeline/valve/impl/ActionValveImpl.java Thu Nov 3 09:39:17 2005 @@ -24,6 +24,9 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.jetspeed.PortalReservedParameters; +import org.apache.jetspeed.om.common.portlet.MutablePortletEntity; +import org.apache.jetspeed.om.page.Fragment; +import org.apache.jetspeed.om.page.Page; import org.apache.jetspeed.pipeline.PipelineException; import org.apache.jetspeed.pipeline.valve.AbstractValve; import org.apache.jetspeed.pipeline.valve.ActionValve; @@ -69,6 +72,7 @@ PortletWindow actionWindow = request.getActionWindow(); if (actionWindow != null) { + initWindow(actionWindow, request); HttpServletResponse response = request.getResponseForWindow(actionWindow); HttpServletRequest requestForWindow = request.getRequestForWindow(actionWindow); requestForWindow.setAttribute(PortalReservedParameters.REQUEST_CONTEXT_ATTRIBUTE, request); @@ -127,6 +131,19 @@ { // TODO Auto-generated method stub return "ActionValveImpl"; + } + + /** + * Makes sure that this PortletWindow's PortletEntity is set to have the + * current requests fragment. + * @param window + * @param request + */ + protected void initWindow(PortletWindow window, RequestContext request) + { + Page page = request.getPage(); + Fragment fragment = page.getFragmentById(window.getId().toString()); + ((MutablePortletEntity)window.getPortletEntity()).setFragment(fragment); } } Modified: portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/components/portletentity/PortletEntityImpl.java URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/components/portletentity/PortletEntityImpl.java?rev=330589&r1=330588&r2=330589&view=diff ============================================================================== --- portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/components/portletentity/PortletEntityImpl.java (original) +++ portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/components/portletentity/PortletEntityImpl.java Thu Nov 3 09:39:17 2005 @@ -38,6 +38,7 @@ import org.apache.jetspeed.om.common.portlet.PrincipalAware; import org.apache.jetspeed.om.common.preference.PreferenceSetComposite; import org.apache.jetspeed.om.page.Fragment; +import org.apache.jetspeed.om.portlet.impl.FragmentPortletDefinition; import org.apache.jetspeed.om.preference.impl.PrefsPreference; import org.apache.jetspeed.om.preference.impl.PrefsPreferenceSetImpl; import org.apache.jetspeed.om.window.impl.PortletWindowListImpl; @@ -99,7 +100,7 @@ public PortletEntityImpl(Fragment fragment) { - this.fragment = fragment; + setFragment(fragment); } public PortletEntityImpl() @@ -212,8 +213,10 @@ if(this.portletDefinition == null) { setPortletDefinition(registry.getPortletDefinitionByIdentifier(getPortletUniqueName())); - } - return this.portletDefinition; + } + + // Wrap the portlet defintion every request + return new FragmentPortletDefinition(this.portletDefinition, fragment); } public PortletApplicationEntity getPortletApplicationEntity() Added: portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/portlet/impl/FragmentPortletDefinition.java URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/portlet/impl/FragmentPortletDefinition.java?rev=330589&view=auto ============================================================================== --- portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/portlet/impl/FragmentPortletDefinition.java (added) +++ portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/portlet/impl/FragmentPortletDefinition.java Thu Nov 3 09:39:17 2005 @@ -0,0 +1,341 @@ +/* + * Copyright 2000-2001,2004 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package org.apache.jetspeed.om.portlet.impl; + +import java.io.IOException; +import java.util.Collection; +import java.util.Locale; + +import org.apache.jetspeed.om.common.GenericMetadata; +import org.apache.jetspeed.om.common.ParameterComposite; +import org.apache.jetspeed.om.common.portlet.PortletDefinitionComposite; +import org.apache.jetspeed.om.common.preference.PreferenceComposite; +import org.apache.jetspeed.om.common.preference.PreferenceSetComposite; +import org.apache.jetspeed.om.page.Fragment; +import org.apache.jetspeed.om.preference.impl.FragmentPortletPreferenceSet; +import org.apache.pluto.om.common.Description; +import org.apache.pluto.om.common.DescriptionSet; +import org.apache.pluto.om.common.DisplayName; +import org.apache.pluto.om.common.DisplayNameSet; +import org.apache.pluto.om.common.Language; +import org.apache.pluto.om.common.LanguageSet; +import org.apache.pluto.om.common.ObjectID; +import org.apache.pluto.om.common.ParameterSet; +import org.apache.pluto.om.common.Preference; +import org.apache.pluto.om.common.PreferenceSet; +import org.apache.pluto.om.common.SecurityRoleRef; +import org.apache.pluto.om.common.SecurityRoleRefSet; +import org.apache.pluto.om.portlet.ContentType; +import org.apache.pluto.om.portlet.ContentTypeSet; +import org.apache.pluto.om.portlet.PortletApplicationDefinition; +import org.apache.pluto.om.servlet.ServletDefinition; + +/** + * Per-request wrapper for a PortletDefinition that allows for + * the supplementaton of psml-based portlet Preferences. + * The Preferences are transparently accessed as default Preferences in + * the exact same way default Preferences that are provided via the portelt.xml + * are. + * + * @author <href a="mailto:[EMAIL PROTECTED]">Scott T. Weaver</a> + * + */ +public class FragmentPortletDefinition implements PortletDefinitionComposite +{ + private final PortletDefinitionComposite portletDefinition; + private final Fragment fragment; + + public FragmentPortletDefinition(PortletDefinitionComposite portletDefinition, Fragment fragment) + { + this.portletDefinition = portletDefinition; + this.fragment = fragment; + } + + public void addContentType(ContentType cType) + { + portletDefinition.addContentType(cType); + } + + public void addContentType(String contentType, Collection modes) + { + portletDefinition.addContentType(contentType, modes); + } + + public void addDescription(Locale locale, String description) + { + portletDefinition.addDescription(locale, description); + } + + public void addDisplayName(DisplayName displayName) + { + portletDefinition.addDisplayName(displayName); + } + + public void addDisplayName(Locale locale, String displayName) + { + portletDefinition.addDisplayName(locale, displayName); + } + + public ParameterComposite addInitParameter(String name, String value, DescriptionSet description) + { + return portletDefinition.addInitParameter(name, value, description); + } + + public ParameterComposite addInitParameter(String name, String value, String description, Locale locale) + { + return portletDefinition.addInitParameter(name, value, description, locale); + } + + public ParameterComposite addInitParameter(String name, String value) + { + return portletDefinition.addInitParameter(name, value); + } + + public void addLanguage(Language lang) + { + portletDefinition.addLanguage(lang); + } + + public void addLanguage(String title, String shortTitle, String keywords, Locale locale) + { + portletDefinition.addLanguage(title, shortTitle, keywords, locale); + } + + public void addPreference(Preference preference) + { + portletDefinition.addPreference(preference); + } + + public PreferenceComposite addPreference(String name, String[] values) + { + return portletDefinition.addPreference(name, values); + } + + public void addSecurityRoleRef(SecurityRoleRef securityRef) + { + portletDefinition.addSecurityRoleRef(securityRef); + } + + public SecurityRoleRef addSecurityRoleRef(String roleName, String roleLink) + { + return portletDefinition.addSecurityRoleRef(roleName, roleLink); + } + + public String getClassName() + { + return portletDefinition.getClassName(); + } + + public ContentTypeSet getContentTypeSet() + { + return portletDefinition.getContentTypeSet(); + } + + public Description getDescription(Locale arg0) + { + return portletDefinition.getDescription(arg0); + } + + public DescriptionSet getDescriptionSet() + { + return portletDefinition.getDescriptionSet(); + } + + public String getDescriptionText(Locale locale) + { + return portletDefinition.getDescriptionText(locale); + } + + public DisplayName getDisplayName(Locale arg0) + { + return portletDefinition.getDisplayName(arg0); + } + + public DisplayNameSet getDisplayNameSet() + { + return portletDefinition.getDisplayNameSet(); + } + + public String getDisplayNameText(Locale locale) + { + return portletDefinition.getDisplayNameText(locale); + } + + public String getExpirationCache() + { + return portletDefinition.getExpirationCache(); + } + + public ObjectID getId() + { + return portletDefinition.getId(); + } + + public ParameterSet getInitParameterSet() + { + return portletDefinition.getInitParameterSet(); + } + + public SecurityRoleRefSet getInitSecurityRoleRefSet() + { + return portletDefinition.getInitSecurityRoleRefSet(); + } + + public LanguageSet getLanguageSet() + { + return portletDefinition.getLanguageSet(); + } + + public GenericMetadata getMetadata() + { + return portletDefinition.getMetadata(); + } + + public String getName() + { + return portletDefinition.getName(); + } + + public PortletApplicationDefinition getPortletApplicationDefinition() + { + return portletDefinition.getPortletApplicationDefinition(); + } + + public ClassLoader getPortletClassLoader() + { + return portletDefinition.getPortletClassLoader(); + } + + public String getPortletIdentifier() + { + return portletDefinition.getPortletIdentifier(); + } + + public PreferenceSet getPreferenceSet() + { + return new FragmentPortletPreferenceSet((PreferenceSetComposite) portletDefinition.getPreferenceSet(), fragment); + } + + public String getPreferenceValidatorClassname() + { + return portletDefinition.getPreferenceValidatorClassname(); + } + + public String getResourceBundle() + { + return portletDefinition.getResourceBundle(); + } + + public ServletDefinition getServletDefinition() + { + return portletDefinition.getServletDefinition(); + } + + public Collection getSupportedLocales() + { + return portletDefinition.getSupportedLocales(); + } + + public String getUniqueName() + { + return portletDefinition.getUniqueName(); + } + + public void setClassName(String arg0) + { + portletDefinition.setClassName(arg0); + } + + public void setContentTypeSet(ContentTypeSet contentTypes) + { + portletDefinition.setContentTypeSet(contentTypes); + } + + public void setDescriptions(DescriptionSet arg0) + { + portletDefinition.setDescriptions(arg0); + } + + public void setDisplayNames(DisplayNameSet arg0) + { + portletDefinition.setDisplayNames(arg0); + } + + public void setExpirationCache(String cache) + { + portletDefinition.setExpirationCache(cache); + } + + public void setId(String arg0) + { + portletDefinition.setId(arg0); + } + + public void setInitParameterSet(ParameterSet parameters) + { + portletDefinition.setInitParameterSet(parameters); + } + + public void setInitSecurityRoleRefSet(SecurityRoleRefSet securityRefs) + { + portletDefinition.setInitSecurityRoleRefSet(securityRefs); + } + + public void setLanguageSet(LanguageSet languages) + { + portletDefinition.setLanguageSet(languages); + } + + public void setMetadata(GenericMetadata metadata) + { + portletDefinition.setMetadata(metadata); + } + + public void setName(String arg0) + { + portletDefinition.setName(arg0); + } + + public void setPortletApplicationDefinition(PortletApplicationDefinition pad) + { + portletDefinition.setPortletApplicationDefinition(pad); + } + + public void setPortletClassLoader(ClassLoader arg0) + { + portletDefinition.setPortletClassLoader(arg0); + } + + public void setPortletIdentifier(String portletIndentifier) + { + portletDefinition.setPortletIdentifier(portletIndentifier); + } + + public void setPreferenceSet(PreferenceSet preferences) + { + portletDefinition.setPreferenceSet(preferences); + } + + public void setPreferenceValidatorClassname(String classname) + { + portletDefinition.setPreferenceValidatorClassname(classname); + } + + public void store() throws IOException + { + portletDefinition.store(); + } +} Propchange: portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/portlet/impl/FragmentPortletDefinition.java ------------------------------------------------------------------------------ svn:eol-style = native Added: portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/preference/impl/FragmentPortletPreferenceSet.java URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/preference/impl/FragmentPortletPreferenceSet.java?rev=330589&view=auto ============================================================================== --- portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/preference/impl/FragmentPortletPreferenceSet.java (added) +++ portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/preference/impl/FragmentPortletPreferenceSet.java Thu Nov 3 09:39:17 2005 @@ -0,0 +1,115 @@ +/* + * Copyright 2000-2001,2004 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package org.apache.jetspeed.om.preference.impl; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import javax.portlet.PreferencesValidator; + +import org.apache.jetspeed.om.common.preference.PreferenceSetComposite; +import org.apache.jetspeed.om.page.Fragment; +import org.apache.pluto.om.common.Preference; + +/** + * This is a per-request wrapper for a PreferenceSet that allows + * the use of fragment-specified Preferences within a portlet instance + * in a page. + * + * @author <href a="mailto:[EMAIL PROTECTED]">Scott T. Weaver</a> + * + */ +public class FragmentPortletPreferenceSet implements PreferenceSetComposite +{ + private final PreferenceSetComposite preferenceSet; + private final Fragment fragment; + private final Map prefs; + + public FragmentPortletPreferenceSet(PreferenceSetComposite preferenceSet, Fragment fragment) + { + this.preferenceSet = preferenceSet; + this.fragment = fragment; + this.prefs = new HashMap(fragment.getPreferences().size()); + Iterator itr = fragment.getPreferences().iterator(); + + while(itr.hasNext()) + { + Preference pref = (Preference) itr.next(); + prefs.put(pref.getName(), pref); + } + + + itr = preferenceSet.iterator(); + while(itr.hasNext()) + { + Preference pref = (Preference) itr.next(); + prefs.put(pref.getName(), pref); + } + } + + public Preference add(String arg0, List arg1) + { + Preference pref = preferenceSet.add(arg0, arg1); + prefs.put(arg0, pref); + return pref; + } + + public Preference get(String name) + { + return (Preference) prefs.get(name); + } + + public Set getNames() + { + return prefs.keySet(); + } + + public PreferencesValidator getPreferencesValidator() + { + return preferenceSet.getPreferencesValidator(); + } + + public Iterator iterator() + { + return prefs.values().iterator(); + } + + public void remove(Preference pref) + { + prefs.remove(pref.getName()); + preferenceSet.remove(pref); + } + + public Preference remove(String name) + { + Preference pref = (Preference) prefs.remove(name); + preferenceSet.remove(name); + return pref; + } + + public void setPreferenceValidator(PreferencesValidator validator) + { + preferenceSet.setPreferenceValidator(validator); + } + + public int size() + { + return prefs.size(); + } +} Propchange: portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/preference/impl/FragmentPortletPreferenceSet.java ------------------------------------------------------------------------------ svn:eol-style = native Added: portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/preference/impl/FragmentPreference.java URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/preference/impl/FragmentPreference.java?rev=330589&view=auto ============================================================================== --- portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/preference/impl/FragmentPreference.java (added) +++ portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/preference/impl/FragmentPreference.java Thu Nov 3 09:39:17 2005 @@ -0,0 +1,89 @@ +/* + * Copyright 2000-2001,2004 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package org.apache.jetspeed.om.preference.impl; + +import java.util.Iterator; +import java.util.List; + +import org.apache.pluto.om.common.Preference; +import org.apache.pluto.om.common.PreferenceCtrl; + +/** + * + * Castor-friendly Preference implementation to be used with Fragment-based + * portlet Preferences. + * + * @author <href a="mailto:[EMAIL PROTECTED]">Scott T. Weaver</a> + * + */ +public class FragmentPreference implements Preference, PreferenceCtrl +{ + private String name; + private List values; + private boolean readOnly; + + public String getName() + { + return name; + } + + public void setName(String name) + { + this.name = name; + } + + public boolean isReadOnly() + { + return readOnly; + } + + public void setReadOnly(boolean readOnly) + { + this.readOnly = readOnly; + } + + public void setReadOnly(String arg0) + { + readOnly = new Boolean(arg0).booleanValue(); + } + + public Iterator getValues() + { + return getValueList().iterator(); + } + + public List getValueList() + { + return this.values; + } + + public void setValues(List values) + { + this.values = values; + } + + public void setValueList(List values) + { + setValues(values); + } + + public boolean isValueSet() + { + return values != null && values.size() > 0; + } + + +} Propchange: portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/preference/impl/FragmentPreference.java ------------------------------------------------------------------------------ svn:eol-style = native Modified: portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/Fragment.java URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/Fragment.java?rev=330589&r1=330588&r2=330589&view=diff ============================================================================== --- portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/Fragment.java (original) +++ portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/Fragment.java Thu Nov 3 09:39:17 2005 @@ -163,7 +163,7 @@ /** * getIntProperty - * + * * Get named property value as integer. * * @param propName property name @@ -173,7 +173,7 @@ /** * getProperties - * + * * Get writable Map of properties by name. * * @return properties map @@ -186,14 +186,14 @@ * @return row layout property **/ public int getLayoutRow(); - + /** * set the layout row property - * + * * @param row */ public void setLayoutRow(int row); - + /** * get layout column property * @@ -210,11 +210,11 @@ /** * get layout sizes property, (i.e. "25%,75%") - * + * * @return sizes layout property **/ public String getLayoutSizes(); - + /** * set the layout sizes * @@ -234,5 +234,11 @@ */ public Object clone() throws java.lang.CloneNotSupportedException; + + /** + * + * @return + */ + List getPreferences(); } Modified: portals/jetspeed-2/trunk/xdocs/psml.xml URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/xdocs/psml.xml?rev=330589&r1=330588&r2=330589&view=diff ============================================================================== --- portals/jetspeed-2/trunk/xdocs/psml.xml (original) +++ portals/jetspeed-2/trunk/xdocs/psml.xml Thu Nov 3 09:39:17 2005 @@ -25,11 +25,12 @@ <body> <section name="PSML"> <ul> - <li><a href="#Page">Page</a></li> - <li><a href="#Defaults">Defaults</a></li> + <li><a href="#Page">Page</a></li> + <li><a href="#Defaults">Defaults</a></li> <li><a href="#Title_and_Metadata">Title and Metadata</a></li> <li><a href="#Layout_Fragments">Layout Fragments</a></li> <li><a href="#Portlet_Fragments">Portlet Fragments</a></li> + <li><a href="#Preferences">Portlet Preferences</a></li> <li><a href="#PSML_Security_Constraints">Security Constraints</a></li> </ul> @@ -51,10 +52,10 @@ /> <title>Welcome to Jetspeed 2</title> <metadata name="title" xml:lang="fr"> - Ma Premiere Page de PSML + Ma Premiere Page de PSML </metadata> <metadata name="title" xml:lang="ja"> - Jetspeed 2 ã¸ãããã + Jetspeed 2 ã¸ãããã </metadata> <fragment id="dp-1" type="layout" name="jetspeed::VelocityTwoColumns"> @@ -221,6 +222,49 @@ </table> <p>Example:</p> <source><![CDATA[ + +]]></source> +</section> + +<section name='Preferences'> +<p> + The <preference> elements allows for the defining of portlet preferences. + This provides an eaiser avenue for the setting of default portlet prefences for a portlet + instance on a page without having to duplicate a portlet definition within + the portlet application's portlet.xml. + <br/><br/> + A fragment can contain 0..n <preference> elements. + <br/><br/> + Preference precedence: User Defined > Fragment Defined > portlet.xml Defined. +</p> +<table> + <tr> + <th>Attribute: name</th> + <th>Attribute: readOnly</th> + <th>Element: value</th> + </tr> + <tr> + <td>The name of the preference.</td> + <td>Whether or not the user can change the value of this preference.</td> + <td>There can be 1..n <i><value></i> elements assigned to a single preference.</td> + </tr> + <tr> + <td></td> + <td></td> + <td></td> + </tr> +</table> +<p>Example:</p> +<source><![CDATA[ + + <fragment id="uhtemp-1012" type="portlet" name="demo::BookmarkPortlet"> + <property layout="TwoColumns" name="row" value="2" /> + <property layout="TwoColumns" name="column" value="1" /> + <preference name="Google" readOnly="false"> + <value>http://www.google.com</value> + </preference> + </fragment> + ]]></source> </section> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
