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 2005/11/30 23:53:59 UTC

svn commit: r350066 [1/3] - in /portals/jetspeed-2/trunk: components/page-manager/ components/page-manager/src/java/JETSPEED-INF/castor/ components/page-manager/src/java/JETSPEED-INF/ojb/ components/page-manager/src/java/org/apache/jetspeed/om/folder/i...

Author: rwatler
Date: Wed Nov 30 14:53:22 2005
New Revision: 350066

URL: http://svn.apache.org/viewcvs?rev=350066&view=rev
Log:
- add FragmentPreference to jetspeed-api
- implement Folder documentOrder for DB PageManager
- implement Fragment preferences for DB PageManager
- remove all OJB specific instance callback processing in DB PageManager om implementation objects
- merge API om implementation objects with the DB PageManager persistent objects to limit runtime translation


Added:
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderOrder.java   (with props)
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderOrderList.java   (with props)
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderSecurityConstraintImpl.java
      - copied, changed from r345429, portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderSecurityConstraint.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentPreferenceImpl.java   (with props)
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentPreferenceList.java   (with props)
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentPreferenceValue.java   (with props)
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentPreferenceValueList.java   (with props)
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentPropertyMap.java   (with props)
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentSecurityConstraintImpl.java
      - copied, changed from r345429, portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentSecurityConstraint.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageSecurityConstraintImpl.java
      - copied, changed from r345429, portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageSecurityConstraint.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageSecurityConstraintsDefList.java   (with props)
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageSecurityConstraintsRefList.java   (with props)
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageSecuritySecurityConstraintImpl.java   (with props)
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/SecurityConstraintDefList.java   (with props)
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/SecurityConstraintList.java   (with props)
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/SecurityConstraintsDefImpl.java
      - copied, changed from r345429, portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageSecuritySecurityConstraintsDef.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/SecurityConstraintsRefList.java   (with props)
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/SecurityConstraintsDefImpl.java
      - copied, changed from r345429, portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/SecurityConstraintsDefImpl.java
    portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/PageManagerTestShared.java   (with props)
    portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/preference/impl/FragmentPreferenceImpl.java
      - copied, changed from r345429, portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/preference/impl/FragmentPreference.java
    portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/preference/
    portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/preference/FragmentPreference.java
Removed:
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderSecurityConstraint.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/SecurityConstraintsDefImpl.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/BaseSecurityConstraint.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentSecurityConstraint.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageSecurityConstraint.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageSecuritySecurityConstraintsDef.java
    portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/preference/impl/FragmentPreference.java
Modified:
    portals/jetspeed-2/trunk/components/page-manager/project.xml
    portals/jetspeed-2/trunk/components/page-manager/src/java/JETSPEED-INF/castor/page-mapping.xml
    portals/jetspeed-2/trunk/components/page-manager/src/java/JETSPEED-INF/ojb/page-manager-repository.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/folder/impl/FolderSecurityConstraintsImpl.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/SecurityConstraintImpl.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/BaseElementImpl.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/BaseSecurityConstraintsRef.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentImpl.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentList.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentSecurityConstraintsImpl.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageImpl.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageSecurityConstraintsImpl.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/PageSecurityImpl.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/SecurityConstraintsImpl.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/psml/FragmentImpl.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/AbstractPageManager.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/document/impl/NodeImpl.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/impl/DatabasePageManager.java
    portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/page/psml/CastorXmlPageManager.java
    portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestCastorXmlPageManager.java
    portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestDatabasePageManager.java
    portals/jetspeed-2/trunk/components/page-manager/src/test/org/apache/jetspeed/page/TestSecureDatabasePageManager.java
    portals/jetspeed-2/trunk/components/page-manager/testdata/pages/test001.psml
    portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorFragmentImpl.java
    portals/jetspeed-2/trunk/components/registry/src/test/org/apache/jetspeed/components/portletentity/TestPortletEntityDAO.java
    portals/jetspeed-2/trunk/etc/schema/phase2-schema.xml
    portals/jetspeed-2/trunk/etc/sql/derby/schema/phase2-schema.sql
    portals/jetspeed-2/trunk/etc/sql/drop.sql
    portals/jetspeed-2/trunk/etc/sql/oracle/drop.sql
    portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/common/SecurityConstraint.java
    portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/folder/Folder.java
    portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/om/page/Fragment.java
    portals/jetspeed-2/trunk/jetspeed-api/src/java/org/apache/jetspeed/page/PageManager.java

Modified: portals/jetspeed-2/trunk/components/page-manager/project.xml
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/project.xml?rev=350066&r1=350065&r2=350066&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/project.xml (original)
+++ portals/jetspeed-2/trunk/components/page-manager/project.xml Wed Nov 30 14:53:22 2005
@@ -86,6 +86,9 @@
 	<unitTestSourceDirectory>${basedir}/src/test</unitTestSourceDirectory>
 
         <unitTest>
+            <excludes>
+                <exclude>**/PageManagerTestShared.java</exclude>
+            </excludes>
             <resources>
                 <resource>
                     <directory>${basedir}/src/test</directory>

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=350066&r1=350065&r2=350066&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 Wed Nov 30 14:53:22 2005
@@ -119,7 +119,7 @@
     </field>
     
     <field name="preferences"
-           type="org.apache.jetspeed.om.preference.impl.FragmentPreference" collection="arraylist">
+           type="org.apache.jetspeed.om.preference.impl.FragmentPreferenceImpl" collection="arraylist">
       <bind-xml name="preference"/>
     </field>
   </class>
@@ -428,19 +428,19 @@
   <class name="org.apache.jetspeed.om.page.SecurityConstraintImpl">
     <map-to xml="security-constraint"/>
 
-    <field name="users" type="java.lang.String">
+    <field name="usersAsString" type="java.lang.String">
       <bind-xml name="users"/>
     </field>
 
-    <field name="roles" type="java.lang.String">
+    <field name="rolesAsString" type="java.lang.String">
       <bind-xml name="roles"/>
     </field>
 
-    <field name="groups" type="java.lang.String">
+    <field name="groupsAsString" type="java.lang.String">
       <bind-xml name="groups"/>
     </field>
 
-    <field name="permissions" type="java.lang.String">
+    <field name="permissionsAsString" type="java.lang.String">
       <bind-xml name="permissions"/>
     </field>
   </class>
@@ -453,7 +453,7 @@
     </field>
 
     <field name="securityConstraintsDefs"
-           type="org.apache.jetspeed.om.page.SecurityConstraintsDefImpl"
+           type="org.apache.jetspeed.om.page.psml.SecurityConstraintsDefImpl"
            collection="collection">
       <bind-xml name="security-constraints-def"/>
     </field>
@@ -465,7 +465,7 @@
     </field>
   </class>
 
-  <class name="org.apache.jetspeed.om.page.SecurityConstraintsDefImpl">
+  <class name="org.apache.jetspeed.om.page.psml.SecurityConstraintsDefImpl">
     <map-to xml="security-constraints-def"/>
 
     <field name="name" type="java.lang.String">
@@ -480,7 +480,7 @@
   </class>
   
 
-  <class name="org.apache.jetspeed.om.preference.impl.FragmentPreference">
+  <class name="org.apache.jetspeed.om.preference.impl.FragmentPreferenceImpl">
     <map-to xml="preference"/>
 
     <field name="name" type="string">

Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/JETSPEED-INF/ojb/page-manager-repository.xml
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/JETSPEED-INF/ojb/page-manager-repository.xml?rev=350066&r1=350065&r2=350066&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/JETSPEED-INF/ojb/page-manager-repository.xml (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/JETSPEED-INF/ojb/page-manager-repository.xml Wed Nov 30 14:53:22 2005
@@ -189,10 +189,11 @@
 
       <collection-descriptor
           name="constraints::constraints"
-          element-class-ref="org.apache.jetspeed.om.folder.impl.FolderSecurityConstraint"
+          element-class-ref="org.apache.jetspeed.om.folder.impl.FolderSecurityConstraintImpl"
           auto-retrieve="true"
           auto-delete="object"
           auto-update="object"
+          proxy="true"
       >
          <orderby name="applyOrder" sort="ASC"/>
          <inverse-foreignkey field-ref="folderId"/>
@@ -204,10 +205,23 @@
           auto-retrieve="true"
           auto-delete="object"
           auto-update="object"
+          proxy="true"
       >
          <orderby name="applyOrder" sort="ASC"/>
          <inverse-foreignkey field-ref="folderId"/>
       </collection-descriptor>
+
+      <collection-descriptor
+          name="orders"
+          element-class-ref="org.apache.jetspeed.om.folder.impl.FolderOrder"
+          auto-retrieve="true"
+          auto-delete="object"
+          auto-update="object"
+          proxy="true"
+      >
+         <orderby name="sortOrder" sort="ASC"/>
+         <inverse-foreignkey field-ref="folderId"/>
+      </collection-descriptor>
    </class-descriptor>
 
    <class-descriptor
@@ -250,7 +264,7 @@
    </class-descriptor>
 
    <class-descriptor
-      class="org.apache.jetspeed.om.folder.impl.FolderSecurityConstraint"
+      class="org.apache.jetspeed.om.folder.impl.FolderSecurityConstraintImpl"
       table="FOLDER_CONSTRAINT"
    >
       <field-descriptor
@@ -275,28 +289,28 @@
       />
 
       <field-descriptor
-         name="userPrincipals"
+         name="usersList"
          column="USER_PRINCIPALS_ACL"
          jdbc-type="VARCHAR"
          conversion="org.apache.jetspeed.util.ojb.CSVtoCollectionFieldConversion"
       />
 
       <field-descriptor
-         name="rolePrincipals"
+         name="rolesList"
          column="ROLE_PRINCIPALS_ACL"
          jdbc-type="VARCHAR"
          conversion="org.apache.jetspeed.util.ojb.CSVtoCollectionFieldConversion"
       />
 
       <field-descriptor
-         name="groupPrincipals"
+         name="groupsList"
          column="GROUP_PRINCIPALS_ACL"
          jdbc-type="VARCHAR"
          conversion="org.apache.jetspeed.util.ojb.CSVtoCollectionFieldConversion"
       />
 
       <field-descriptor
-         name="permissions"
+         name="permissionsList"
          column="PERMISSIONS_ACL"
          jdbc-type="VARCHAR"
          conversion="org.apache.jetspeed.util.ojb.CSVtoCollectionFieldConversion"
@@ -335,6 +349,38 @@
       />
    </class-descriptor>
 
+   <class-descriptor
+      class="org.apache.jetspeed.om.folder.impl.FolderOrder"
+      table="FOLDER_ORDER"
+   >
+      <field-descriptor
+         name="id"
+         column="ORDER_ID"
+         jdbc-type="INTEGER"
+         primarykey="true"
+         autoincrement="true"
+      />
+
+      <field-descriptor
+        name="folderId"
+        column="FOLDER_ID"
+        jdbc-type="INTEGER"
+        access="anonymous"
+      />
+
+      <field-descriptor
+         name="sortOrder"
+         column="SORT_ORDER"
+         jdbc-type="INTEGER"
+      />
+
+      <field-descriptor
+         name="name"
+         column="NAME"
+         jdbc-type="VARCHAR"
+      />
+   </class-descriptor>
+
    <!-- Page mapping -->
 
    <class-descriptor
@@ -502,10 +548,11 @@
 
       <collection-descriptor
           name="constraints::constraints"
-          element-class-ref="org.apache.jetspeed.om.page.impl.PageSecurityConstraint"
+          element-class-ref="org.apache.jetspeed.om.page.impl.PageSecurityConstraintImpl"
           auto-retrieve="true"
           auto-delete="object"
           auto-update="object"
+          proxy="true"
       >
          <orderby name="applyOrder" sort="ASC"/>
          <inverse-foreignkey field-ref="pageId"/>
@@ -517,6 +564,7 @@
           auto-retrieve="true"
           auto-delete="object"
           auto-update="object"
+          proxy="true"
       >
          <orderby name="applyOrder" sort="ASC"/>
          <inverse-foreignkey field-ref="pageId"/>
@@ -563,7 +611,7 @@
    </class-descriptor>
 
    <class-descriptor
-      class="org.apache.jetspeed.om.page.impl.PageSecurityConstraint"
+      class="org.apache.jetspeed.om.page.impl.PageSecurityConstraintImpl"
       table="PAGE_CONSTRAINT"
    >
       <field-descriptor
@@ -588,28 +636,28 @@
       />
 
       <field-descriptor
-         name="userPrincipals"
+         name="usersList"
          column="USER_PRINCIPALS_ACL"
          jdbc-type="VARCHAR"
          conversion="org.apache.jetspeed.util.ojb.CSVtoCollectionFieldConversion"
       />
 
       <field-descriptor
-         name="rolePrincipals"
+         name="rolesList"
          column="ROLE_PRINCIPALS_ACL"
          jdbc-type="VARCHAR"
          conversion="org.apache.jetspeed.util.ojb.CSVtoCollectionFieldConversion"
       />
 
       <field-descriptor
-         name="groupPrincipals"
+         name="groupsList"
          column="GROUP_PRINCIPALS_ACL"
          jdbc-type="VARCHAR"
          conversion="org.apache.jetspeed.util.ojb.CSVtoCollectionFieldConversion"
       />
 
       <field-descriptor
-         name="permissions"
+         name="permissionsList"
          column="PERMISSIONS_ACL"
          jdbc-type="VARCHAR"
          conversion="org.apache.jetspeed.util.ojb.CSVtoCollectionFieldConversion"
@@ -780,10 +828,11 @@
 
       <collection-descriptor
           name="constraints::constraints"
-          element-class-ref="org.apache.jetspeed.om.page.impl.FragmentSecurityConstraint"
+          element-class-ref="org.apache.jetspeed.om.page.impl.FragmentSecurityConstraintImpl"
           auto-retrieve="true"
           auto-delete="object"
           auto-update="object"
+          proxy="true"
       >
          <orderby name="applyOrder" sort="ASC"/>
          <inverse-foreignkey field-ref="fragmentId"/>
@@ -795,14 +844,27 @@
           auto-retrieve="true"
           auto-delete="object"
           auto-update="object"
+          proxy="true"
       >
          <orderby name="applyOrder" sort="ASC"/>
          <inverse-foreignkey field-ref="fragmentId"/>
       </collection-descriptor>
+
+      <collection-descriptor
+          name="preferences"
+          element-class-ref="org.apache.jetspeed.om.page.impl.FragmentPreferenceImpl"
+          auto-retrieve="true"
+          auto-delete="object"
+          auto-update="object"
+          proxy="true"
+      >
+         <orderby name="name" sort="ASC"/>
+         <inverse-foreignkey field-ref="fragmentId"/>
+      </collection-descriptor>
    </class-descriptor>
 
    <class-descriptor
-      class="org.apache.jetspeed.om.page.impl.FragmentSecurityConstraint"
+      class="org.apache.jetspeed.om.page.impl.FragmentSecurityConstraintImpl"
       table="FRAGMENT_CONSTRAINT"
    >
       <field-descriptor
@@ -827,28 +889,28 @@
       />
 
       <field-descriptor
-         name="userPrincipals"
+         name="usersList"
          column="USER_PRINCIPALS_ACL"
          jdbc-type="VARCHAR"
          conversion="org.apache.jetspeed.util.ojb.CSVtoCollectionFieldConversion"
       />
 
       <field-descriptor
-         name="rolePrincipals"
+         name="rolesList"
          column="ROLE_PRINCIPALS_ACL"
          jdbc-type="VARCHAR"
          conversion="org.apache.jetspeed.util.ojb.CSVtoCollectionFieldConversion"
       />
 
       <field-descriptor
-         name="groupPrincipals"
+         name="groupsList"
          column="GROUP_PRINCIPALS_ACL"
          jdbc-type="VARCHAR"
          conversion="org.apache.jetspeed.util.ojb.CSVtoCollectionFieldConversion"
       />
 
       <field-descriptor
-         name="permissions"
+         name="permissionsList"
          column="PERMISSIONS_ACL"
          jdbc-type="VARCHAR"
          conversion="org.apache.jetspeed.util.ojb.CSVtoCollectionFieldConversion"
@@ -887,6 +949,82 @@
       />
    </class-descriptor>
 
+   <class-descriptor
+      class="org.apache.jetspeed.om.page.impl.FragmentPreferenceImpl"
+      table="FRAGMENT_PREF"
+   >
+      <field-descriptor
+         name="id"
+         column="PREF_ID"
+         jdbc-type="INTEGER"
+         primarykey="true"
+         autoincrement="true"
+      />
+
+      <field-descriptor
+        name="fragmentId"
+        column="FRAGMENT_ID"
+        jdbc-type="INTEGER"
+        access="anonymous"
+      />
+
+      <field-descriptor
+         name="name"
+         column="NAME"
+         jdbc-type="VARCHAR"
+      />
+
+      <field-descriptor
+         name="readOnly"
+         column="IS_READ_ONLY"
+         jdbc-type="INTEGER"
+         conversion="org.apache.ojb.broker.accesslayer.conversions.Boolean2IntFieldConversion"
+      />
+
+      <collection-descriptor
+          name="values"
+          element-class-ref="org.apache.jetspeed.om.page.impl.FragmentPreferenceValue"
+          auto-retrieve="true"
+          auto-delete="object"
+          auto-update="object"
+          proxy="true"
+      >
+         <inverse-foreignkey field-ref="prefId"/>
+      </collection-descriptor>
+   </class-descriptor>
+
+   <class-descriptor
+      class="org.apache.jetspeed.om.page.impl.FragmentPreferenceValue"
+      table="FRAGMENT_PREF_VALUE"
+   >
+      <field-descriptor
+         name="id"
+         column="PREF_VALUE_ID"
+         jdbc-type="INTEGER"
+         primarykey="true"
+         autoincrement="true"
+      />
+
+      <field-descriptor
+        name="prefId"
+        column="PREF_ID"
+        jdbc-type="INTEGER"
+        access="anonymous"
+      />
+
+      <field-descriptor
+         name="valueOrder"
+         column="VALUE_ORDER"
+         jdbc-type="INTEGER"
+      />
+
+      <field-descriptor
+         name="value"
+         column="VALUE"
+         jdbc-type="VARCHAR"
+      />
+   </class-descriptor>
+
    <!-- PageSecurity mapping -->
 
    <class-descriptor
@@ -989,13 +1127,13 @@
 
       <collection-descriptor
           name="constraintsDefs"
-          element-class-ref="org.apache.jetspeed.om.page.impl.PageSecuritySecurityConstraintsDef"
+          element-class-ref="org.apache.jetspeed.om.page.impl.SecurityConstraintsDefImpl"
           auto-retrieve="true"
           auto-delete="object"
           auto-update="object"
+          proxy="true"
       >
          <orderby name="name" sort="ASC"/>
-         <orderby name="applyOrder" sort="ASC"/>
          <inverse-foreignkey field-ref="pageSecurityId"/>
       </collection-descriptor>
 
@@ -1005,6 +1143,7 @@
           auto-retrieve="true"
           auto-delete="object"
           auto-update="object"
+          proxy="true"
       >
          <orderby name="applyOrder" sort="ASC"/>
          <inverse-foreignkey field-ref="pageSecurityId"/>
@@ -1012,7 +1151,7 @@
    </class-descriptor>
 
    <class-descriptor
-      class="org.apache.jetspeed.om.page.impl.PageSecuritySecurityConstraintsDef"
+      class="org.apache.jetspeed.om.page.impl.SecurityConstraintsDefImpl"
       table="PAGE_SEC_CONSTRAINTS_DEF"
    >
       <field-descriptor
@@ -1036,6 +1175,39 @@
          jdbc-type="VARCHAR"
       />
 
+      <collection-descriptor
+          name="constraintDefs"
+          element-class-ref="org.apache.jetspeed.om.page.impl.PageSecuritySecurityConstraintImpl"
+          auto-retrieve="true"
+          auto-delete="object"
+          auto-update="object"
+          proxy="true"
+      >
+         <orderby name="applyOrder" sort="ASC"/>
+         <inverse-foreignkey field-ref="constraintsDefId"/>
+      </collection-descriptor>
+
+   </class-descriptor>
+
+   <class-descriptor
+      class="org.apache.jetspeed.om.page.impl.PageSecuritySecurityConstraintImpl"
+      table="PAGE_SEC_CONSTRAINT_DEF"
+   >
+      <field-descriptor
+         name="id"
+         column="CONSTRAINT_DEF_ID"
+         jdbc-type="INTEGER"
+         primarykey="true"
+         autoincrement="true"
+      />
+
+      <field-descriptor
+        name="constraintsDefId"
+        column="CONSTRAINTS_DEF_ID"
+        jdbc-type="INTEGER"
+        access="anonymous"
+      />
+
       <field-descriptor
          name="applyOrder"
          column="APPLY_ORDER"
@@ -1043,28 +1215,28 @@
       />
 
       <field-descriptor
-         name="userPrincipals"
+         name="usersList"
          column="USER_PRINCIPALS_ACL"
          jdbc-type="VARCHAR"
          conversion="org.apache.jetspeed.util.ojb.CSVtoCollectionFieldConversion"
       />
 
       <field-descriptor
-         name="rolePrincipals"
+         name="rolesList"
          column="ROLE_PRINCIPALS_ACL"
          jdbc-type="VARCHAR"
          conversion="org.apache.jetspeed.util.ojb.CSVtoCollectionFieldConversion"
       />
 
       <field-descriptor
-         name="groupPrincipals"
+         name="groupsList"
          column="GROUP_PRINCIPALS_ACL"
          jdbc-type="VARCHAR"
          conversion="org.apache.jetspeed.util.ojb.CSVtoCollectionFieldConversion"
       />
 
       <field-descriptor
-         name="permissions"
+         name="permissionsList"
          column="PERMISSIONS_ACL"
          jdbc-type="VARCHAR"
          conversion="org.apache.jetspeed.util.ojb.CSVtoCollectionFieldConversion"

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=350066&r1=350065&r2=350066&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 Wed Nov 30 14:53:22 2005
@@ -20,6 +20,7 @@
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
+import java.util.ListIterator;
 
 import org.apache.jetspeed.om.common.SecuredResource;
 import org.apache.jetspeed.om.folder.Folder;
@@ -53,7 +54,9 @@
     private List folders;
     private List pages;
     private List pageSecurity;
+    private List orders;
 
+    private FolderOrderList documentOrder;
     private NodeSet allNodeSet;
     private NodeSet foldersNodeSet;
     private NodeSet pagesNodeSet;
@@ -64,6 +67,23 @@
     }
 
     /**
+     * accessFolderOrders
+     *
+     * Access mutable persistent collection member for List wrappers.
+     *
+     * @return persistent collection
+     */
+    List accessFolderOrders()
+    {
+        // create initial collection if necessary
+        if (orders == null)
+        {
+            orders = new ArrayList();
+        }
+        return orders;
+    }
+
+    /**
      * addFolder
      *
      * Adds a folder to the persistent collection and resets cached node sets.
@@ -75,7 +95,7 @@
         // add to folders collection
         if (folders == null)
         {
-            folders = new ArrayList();
+            folders = new ArrayList(4);
         }
         folders.add(newFolder);
 
@@ -116,7 +136,7 @@
         // add to pages collection
         if (pages == null)
         {
-            pages = new ArrayList();
+            pages = new ArrayList(8);
         }
         pages.add(newPage);
 
@@ -237,15 +257,34 @@
      */
     public List getDocumentOrder()
     {
-        return null; // NYI
+        // return mutable document order list
+        // by using list wrapper to manage sort
+        // order and element uniqueness
+        if (documentOrder == null)
+        {
+            documentOrder = new FolderOrderList(this);
+        }
+        return documentOrder;
     }
     
     /* (non-Javadoc)
      * @see org.apache.jetspeed.om.folder.Folder#setDocumentOrder(java.util.List)
      */
-    public void setDocumentOrder(List docIndexes)
+    public void setDocumentOrder(List docNames)
     {
-        // NYI
+        // set document order using ordered document
+        // names by replacing existing entries with
+        // new elements if new collection is specified
+        List documentOrder = getDocumentOrder();
+        if (docNames != documentOrder)
+        {
+            // replace all document order names
+            documentOrder.clear();
+            if (docNames != null)
+            {
+                documentOrder.addAll(docNames);
+            }
+        }
     }
 
     /* (non-Javadoc)

Added: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderOrder.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderOrder.java?rev=350066&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderOrder.java (added)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderOrder.java Wed Nov 30 14:53:22 2005
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2005 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.folder.impl;
+
+/**
+ * FolderOrder
+ *
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+public class FolderOrder
+{
+    private int id;
+    private int sortOrder;
+    private String name;
+
+    /**
+     * getSortOrder
+     *
+     * @return sort order
+     */
+    public int getSortOrder()
+    {
+        return sortOrder;
+    }
+
+    /**
+     * setSortOrder
+     *
+     * @param order sort order
+     */
+    public void setSortOrder(int order)
+    {
+        sortOrder = order;
+    }
+
+    /**
+     * getName
+     *
+     * @return folder/page/link name
+     */
+    public String getName()
+    {
+        return name;
+    }
+
+    /**
+     * setName
+     *
+     * @param name folder/page/link name
+     */
+    public void setName(String name)
+    {
+        this.name = name;
+    }
+
+    /* (non-Javadoc)
+     * @see java.lang.Object#equals(java.lang.Object)
+     */
+    public boolean equals(Object o)
+    {
+        if (o instanceof FolderOrder)
+        {
+            if (name != null)
+            {
+                return name.equals(((FolderOrder)o).getName());
+            }
+            else
+            {
+                return (((FolderOrder)o).getName() == null);
+            }
+        }
+        return false;
+    }
+
+    /* (non-Javadoc)
+     * @see java.lang.Object#hashCode()
+     */
+    public int hashCode()
+    {
+        if (name != null)
+        {
+            return name.hashCode();
+        }
+        return 0;
+    }
+}

Propchange: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderOrder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderOrderList.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderOrderList.java?rev=350066&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderOrderList.java (added)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderOrderList.java Wed Nov 30 14:53:22 2005
@@ -0,0 +1,184 @@
+/*
+ * Copyright 2005 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.folder.impl;
+
+import java.util.AbstractList;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * FolderOrderList
+ *
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+class FolderOrderList extends AbstractList
+{
+    private FolderImpl folder;
+
+    private List removedFolderOrders;
+
+    FolderOrderList(FolderImpl folder)
+    {
+        super();
+        this.folder = folder;
+    }
+
+    /**
+     * wrapNameStringForAdd
+     *
+     * Wraps and validates folder order name string
+     * to be added to this list.
+     *
+     * @param name folder order name string to add
+     * @return list element to add
+     */
+    private FolderOrder wrapNameStringForAdd(String name)
+    {
+        // only non-null names supported
+        if (name == null)
+        {
+            throw new NullPointerException("Unable to add null to list.");
+        }
+        // wrap folder order name string
+        FolderOrder folderOrder = new FolderOrder();
+        folderOrder.setName(name);
+        // make sure element is unique
+        if (folder.accessFolderOrders().contains(folderOrder))
+        {
+            throw new IllegalArgumentException("Unable to add duplicate entry to list: " + folderOrder.getName());
+        }
+        // retrieve from removed list to reuse
+        // previously removed element
+        if (removedFolderOrders != null)
+        {
+            int removedIndex = removedFolderOrders.indexOf(folderOrder);
+            if (removedIndex >= 0)
+            {
+                folderOrder = (FolderOrder)removedFolderOrders.remove(removedIndex);
+            }
+        }
+        return folderOrder;
+    }
+
+    /**
+     * getRemovedFolderOrders
+     *
+     * @return removed folder orders tracking collection
+     */
+    private List getRemovedFolderOrders()
+    {
+        if (removedFolderOrders == null)
+        {
+            removedFolderOrders = new ArrayList(folder.accessFolderOrders().size());
+        }
+        return removedFolderOrders;
+    }
+
+    /* (non-Javadoc)
+     * @see java.util.List#add(int,java.lang.Object)
+     */
+    public void add(int index, Object element)
+    {
+        // implement for modifiable AbstractList:
+        // validate index
+        if ((index < 0) || (index > folder.accessFolderOrders().size()))
+        {
+            throw new IndexOutOfBoundsException("Unable to add to list at index: " + index);
+        }
+        // wrap and verify folder order name string
+        FolderOrder folderOrder = wrapNameStringForAdd((String)element);
+        // add to underlying ordered list
+        folder.accessFolderOrders().add(index, folderOrder);
+        // set sort order in added element
+        if (index > 0)
+        {
+            folderOrder.setSortOrder(((FolderOrder)folder.accessFolderOrders().get(index-1)).getSortOrder() + 1);
+        }
+        else
+        {
+            folderOrder.setSortOrder(0);
+        }
+        // maintain sort order in subsequent elements
+        for (int i = index, limit = folder.accessFolderOrders().size() - 1; (i < limit); i++)
+        {
+            FolderOrder nextFolderOrder = (FolderOrder)folder.accessFolderOrders().get(i + 1);
+            if (nextFolderOrder.getSortOrder() <= folderOrder.getSortOrder())
+            {
+                // adjust sort order for next element
+                nextFolderOrder.setSortOrder(folderOrder.getSortOrder() + 1);
+                folderOrder = nextFolderOrder;
+            }
+            else
+            {
+                // sort order maintained for remaining list elements
+                break;
+            }
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see java.util.List#get(int)
+     */
+    public Object get(int index)
+    {
+        // implement for modifiable AbstractList:
+        // unwrap folder order name string
+        return ((FolderOrder)folder.accessFolderOrders().get(index)).getName();
+    }
+
+    /* (non-Javadoc)
+     * @see java.util.List#remove(int)
+     */
+    public Object remove(int index)
+    {
+        // implement for modifiable AbstractList:
+        // save removed element 
+        FolderOrder removed = (FolderOrder)folder.accessFolderOrders().remove(index);
+        if (removed != null)
+        {
+            getRemovedFolderOrders().add(removed);
+        }
+        return removed;
+    }
+
+    /* (non-Javadoc)
+     * @see java.util.List#set(int,java.lang.Object)
+     */
+    public Object set(int index, Object element)
+    {
+        // implement for modifiable AbstractList:
+        // wrap and verify folder order name string
+        FolderOrder newFolderOrder = wrapNameStringForAdd((String)element);
+        // set in underlying ordered list
+        FolderOrder folderOrder = (FolderOrder)folder.accessFolderOrders().set(index, newFolderOrder);
+        // set sort order in new element
+        newFolderOrder.setSortOrder(folderOrder.getSortOrder());
+        // save replaced element
+        getRemovedFolderOrders().add(folderOrder);
+        // return unwrapped folder order name string
+        return folderOrder.getName();
+    }
+
+    /* (non-Javadoc)
+     * @see java.util.List#size()
+     */
+    public int size()
+    {
+        // implement for modifiable AbstractList
+        return folder.accessFolderOrders().size();
+    }
+}

Propchange: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderOrderList.java
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderSecurityConstraintImpl.java (from r345429, portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderSecurityConstraint.java)
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderSecurityConstraintImpl.java?p2=portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderSecurityConstraintImpl.java&p1=portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderSecurityConstraint.java&r1=345429&r2=350066&rev=350066&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderSecurityConstraint.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderSecurityConstraintImpl.java Wed Nov 30 14:53:22 2005
@@ -15,15 +15,15 @@
  */
 package org.apache.jetspeed.om.folder.impl;
 
-import org.apache.jetspeed.om.page.impl.BaseSecurityConstraint;
+import org.apache.jetspeed.om.page.SecurityConstraintImpl;
 
 /**
- * FolderSecurityConstraint
+ * FolderSecurityConstraintImpl
  *
  * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
  * @version $Id$
  */
-public class FolderSecurityConstraint extends BaseSecurityConstraint
+public class FolderSecurityConstraintImpl extends SecurityConstraintImpl
 {
     // new class defined only to facilitate OJB table/class mapping
 }

Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderSecurityConstraintsImpl.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderSecurityConstraintsImpl.java?rev=350066&r1=350065&r2=350066&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderSecurityConstraintsImpl.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/folder/impl/FolderSecurityConstraintsImpl.java Wed Nov 30 14:53:22 2005
@@ -15,8 +15,6 @@
  */
 package org.apache.jetspeed.om.folder.impl;
 
-import org.apache.jetspeed.om.page.impl.BaseSecurityConstraint;
-import org.apache.jetspeed.om.page.impl.BaseSecurityConstraintsRef;
 import org.apache.jetspeed.om.page.impl.SecurityConstraintsImpl;
 
 /**
@@ -28,18 +26,18 @@
 public class FolderSecurityConstraintsImpl extends SecurityConstraintsImpl
 {
     /* (non-Javadoc)
-     * @see org.apache.jetspeed.om.page.impl.SecurityConstraintsImpl#newSecurityConstraint()
+     * @see org.apache.jetspeed.om.page.impl.SecurityConstraintsImpl#getSecurityConstraintClass()
      */
-    public BaseSecurityConstraint newSecurityConstraint()
+    public Class getSecurityConstraintClass()
     {
-        return new FolderSecurityConstraint();
+        return FolderSecurityConstraintImpl.class;
     }
 
     /* (non-Javadoc)
-     * @see org.apache.jetspeed.om.page.impl.SecurityConstraintsImpl#newSecurityConstraintsRef()
+     * @see org.apache.jetspeed.om.page.impl.SecurityConstraintsImpl#getSecurityConstraintsRefClass()
      */
-    public BaseSecurityConstraintsRef newSecurityConstraintsRef()
+    public Class getSecurityConstraintsRefClass()
     {
-        return new FolderSecurityConstraintsRef();
+        return FolderSecurityConstraintsRef.class;
     }
 }

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=350066&r1=350065&r2=350066&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 Wed Nov 30 14:53:22 2005
@@ -665,10 +665,19 @@
 
     }
 
-
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.page.Fragment#getPreferences()
+     */
     public List getPreferences()
     {
         return fragment.getPreferences();
     }
     
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.page.Fragment#setPreferences(java.util.List)
+     */
+    public void setPreferences(List preferences)
+    {
+        fragment.setPreferences(preferences);
+    }
 }

Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/SecurityConstraintImpl.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/SecurityConstraintImpl.java?rev=350066&r1=350065&r2=350066&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/SecurityConstraintImpl.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/SecurityConstraintImpl.java Wed Nov 30 14:53:22 2005
@@ -37,227 +37,239 @@
  */
 public class SecurityConstraintImpl implements SecurityConstraint
 {
-    private String users;
+    private int id;
+    private int applyOrder;
     private List usersList;
-
-    private String roles;
     private List rolesList;
-
-    private String groups;
     private List groupsList;
+    private List permissionsList;
 
+    private String users;
+    private String roles;
+    private String groups;
     private String permissions;
-    private List permissionsList;
 
     /**
-     * <p>
-     * getUsers
-     * </p>
+     * getApplyOrder
      *
-     * @see org.apache.jetspeed.om.common.SecurityConstraint#getUsers()
-     * @return
+     * @return apply order for constraints
      */
-    public String getUsers()
+    public int getApplyOrder()
     {
-        return users;
+        return applyOrder;
     }
-    
+
     /**
-     * <p>
-     * getUsersList
-     * </p>
+     * setApplyOrder
      *
-     * @see org.apache.jetspeed.om.common.SecurityConstraint#getUsersList()
-     * @return
+     * @param order apply order for constraints
      */
-    public List getUsersList()
+    public void setApplyOrder(int order)
     {
-        return usersList;
+        applyOrder = order;
     }
-    
+
     /**
-     * <p>
-     * setUsers
-     * </p>
+     * getUsersAsString
      *
-     * @see org.apache.jetspeed.om.common.SecurityConstraint#setUsers(java.lang.String)
-     * @param users
+     * @return users CSV list
      */
-    public void setUsers(String users)
+    public String getUsersAsString()
     {
-        this.users = users;
-        usersList = parseCSVList(users);
+        if ((users == null) && (usersList != null) && !usersList.isEmpty())
+        {
+            users = formatCSVList(usersList);
+        }
+        return users;
     }
 
     /**
-     * <p>
-     * setUsers
-     * </p>
+     * setUsersAsString
      *
-     * @see org.apache.jetspeed.om.common.SecurityConstraint#setUsers(java.util.List)
-     * @param users
+     * @param users users CSV list
      */
-    public void setUsers(List users)
+    public void setUsersAsString(String users)
     {
-        this.users = formatCSVList(users);
-        usersList = users;
+        this.users = users;
+        usersList = parseCSVList(users);
     }
 
     /**
-     * <p>
-     * getRoles
-     * </p>
+     * getRolesAsString
      *
-     * @see org.apache.jetspeed.om.common.SecurityConstraint#getRoles()
-     * @return
+     * @return roles CSV list
      */
-    public String getRoles()
+    public String getRolesAsString()
     {
+        if ((roles == null) && (rolesList != null) && !rolesList.isEmpty())
+        {
+            roles = formatCSVList(rolesList);
+        }
         return roles;
     }
     
     /**
-     * <p>
-     * getRolesList
-     * </p>
+     * setRolesAsString
      *
-     * @see org.apache.jetspeed.om.common.SecurityConstraint#getRolesList()
-     * @return
+     * @param roles roles CSV list
      */
-    public List getRolesList()
+    public void setRolesAsString(String roles)
     {
-        return rolesList;
+        this.roles = roles;
+        rolesList = parseCSVList(roles);
+    }
+
+    /**
+     * getGroupsAsString
+     *
+     * @return groups CSV list
+     */
+    public String getGroupsAsString()
+    {
+        if ((groups == null) && (groupsList != null) && !groupsList.isEmpty())
+        {
+            groups = formatCSVList(groupsList);
+        }
+        return groups;
     }
     
     /**
-     * <p>
-     * setRoles
-     * </p>
+     * setGroupsAsString
      *
-     * @see org.apache.jetspeed.om.common.SecurityConstraint#setRoles(java.lang.String)
-     * @param roles
+     * @param groups groups CSV list
      */
-    public void setRoles(String roles)
+    public void setGroupsAsString(String groups)
     {
-        this.roles = roles;
-        rolesList = parseCSVList(roles);
+        this.groups = groups;
+        groupsList = parseCSVList(groups);
     }
 
     /**
-     * <p>
-     * setRoles
-     * </p>
+     * getPermissionsAsString
      *
-     * @see org.apache.jetspeed.om.common.SecurityConstraint#setRoles(java.util.List)
-     * @param roles
+     * @return permmissions CSV list
      */
-    public void setRoles(List roles)
+    public String getPermissionsAsString()
     {
-        this.roles = formatCSVList(roles);
-        rolesList = roles;
+        if ((permissions == null) && (permissionsList != null) && !permissionsList.isEmpty())
+        {
+            permissions = formatCSVList(permissionsList);
+        }
+        return permissions;
     }
-
+    
     /**
-     * <p>
-     * getGroups
-     * </p>
+     * setPermissionsAsString
      *
-     * @see org.apache.jetspeed.om.common.SecurityConstraint#getGroups()
-     * @return
+     * @param permissions permmissions CSV list
      */
-    public String getGroups()
+    public void setPermissionsAsString(String permissions)
     {
-        return groups;
+        this.permissions = permissions;
+        permissionsList = parseCSVList(permissions);
     }
     
     /**
      * <p>
-     * getGroupsList
+     * getUsers
      * </p>
      *
-     * @see org.apache.jetspeed.om.common.SecurityConstraint#getGroupsList()
-     * @return
+     * @see org.apache.jetspeed.om.common.SecurityConstraint#getUsers()
+     * @return users list
      */
-    public List getGroupsList()
+    public List getUsers()
     {
-        return groupsList;
+        return usersList;
     }
     
     /**
      * <p>
-     * setGroups
+     * setUsers
      * </p>
      *
-     * @see org.apache.jetspeed.om.common.SecurityConstraint#setGroups(java.lang.String)
-     * @param groups
+     * @see org.apache.jetspeed.om.common.SecurityConstraint#setUsers(java.util.List)
+     * @param users users list
      */
-    public void setGroups(String groups)
+    public void setUsers(List users)
     {
-        this.groups = groups;
-        groupsList = parseCSVList(groups);
+        this.users = formatCSVList(users);
+        usersList = users;
     }
 
     /**
      * <p>
-     * setGroups
+     * getRoles
      * </p>
      *
-     * @see org.apache.jetspeed.om.common.SecurityConstraint#setGroups(java.util.List)
-     * @param groups
+     * @see org.apache.jetspeed.om.common.SecurityConstraint#getRoles()
+     * @return roles list
      */
-    public void setGroups(List groups)
+    public List getRoles()
     {
-        this.groups = formatCSVList(groups);
-        groupsList = groups;
+        return rolesList;
     }
-
+    
     /**
      * <p>
-     * getPermissions
+     * setRoles
      * </p>
      *
-     * @see org.apache.jetspeed.om.common.SecurityConstraint#getPermissions()
-     * @return
+     * @see org.apache.jetspeed.om.common.SecurityConstraint#setRoles(java.util.List)
+     * @param roles roles list
      */
-    public String getPermissions()
+    public void setRoles(List roles)
     {
-        return permissions;
+        this.roles = formatCSVList(roles);
+        rolesList = roles;
     }
-    
+
     /**
      * <p>
-     * getPermissionsList
+     * getGroups
      * </p>
      *
-     * @see org.apache.jetspeed.om.common.SecurityConstraint#getPermissionsList()
-     * @return
+     * @see org.apache.jetspeed.om.common.SecurityConstraint#getGroups()
+     * @return groups list
      */
-    public List getPermissionsList()
+    public List getGroups()
     {
-        return permissionsList;
+        return groupsList;
     }
     
     /**
      * <p>
-     * setPermissions
+     * setGroups
      * </p>
      *
-     * @see org.apache.jetspeed.om.common.SecurityConstraint#setPermissions(java.lang.String)
-     * @param permissions
+     * @see org.apache.jetspeed.om.common.SecurityConstraint#setGroups(java.util.List)
+     * @param groups groups list
      */
-    public void setPermissions(String permissions)
+    public void setGroups(List groups)
     {
-        this.permissions = permissions;
-        permissionsList = parseCSVList(permissions);
+        this.groups = formatCSVList(groups);
+        groupsList = groups;
     }
 
     /**
      * <p>
+     * getPermissions
+     * </p>
+     *
+     * @see org.apache.jetspeed.om.common.SecurityConstraint#getPermissions()
+     * @return permissions list
+     */
+    public List getPermissions()
+    {
+        return permissionsList;
+    }
+    
+    /**
+     * <p>
      * setPermissions
      * </p>
      *
      * @see org.apache.jetspeed.om.common.SecurityConstraint#setPermissions(java.util.List)
-     * @param permissions
+     * @param permissions permissions list
      */
     public void setPermissions(List permissions)
     {

Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/BaseElementImpl.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/BaseElementImpl.java?rev=350066&r1=350065&r2=350066&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/BaseElementImpl.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/BaseElementImpl.java Wed Nov 30 14:53:22 2005
@@ -34,9 +34,6 @@
 import org.apache.jetspeed.security.PagePermission;
 import org.apache.jetspeed.security.RolePrincipal;
 import org.apache.jetspeed.security.UserPrincipal;
-import org.apache.ojb.broker.PersistenceBroker;
-import org.apache.ojb.broker.PersistenceBrokerAware;
-import org.apache.ojb.broker.PersistenceBrokerException;
 
 /**
  * BaseElementImpl
@@ -44,7 +41,7 @@
  * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
  * @version $Id$
  */
-public abstract class BaseElementImpl implements BaseElement, PersistenceBrokerAware
+public abstract class BaseElementImpl implements BaseElement
 {
     private int id;
     private String name;
@@ -474,71 +471,5 @@
     public void setShortTitle(String title)
     {
         shortTitle = title;
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.ojb.broker.PersistenceBrokerAware#beforeInsert(org.apache.ojb.broker.PersistenceBroker)
-     */
-    public void beforeInsert(PersistenceBroker broker) throws PersistenceBrokerException
-    {
-        // execute update hook by default
-        beforeUpdate(broker);
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.ojb.broker.PersistenceBrokerAware#afterInsert(org.apache.ojb.broker.PersistenceBroker)
-     */
-    public void afterInsert(PersistenceBroker broker) throws PersistenceBrokerException
-    {
-        // execute update hook by default
-        afterUpdate(broker);
-    }
-    
-    /* (non-Javadoc)
-     * @see org.apache.ojb.broker.PersistenceBrokerAware#beforeUpdate(org.apache.ojb.broker.PersistenceBroker)
-     */
-    public void beforeUpdate(PersistenceBroker broker) throws PersistenceBrokerException
-    {
-        // update constraints to maintain mapping
-        if (constraints != null)
-        {
-            constraints.beforeUpdate();
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.ojb.broker.PersistenceBrokerAware#afterUpdate(org.apache.ojb.broker.PersistenceBroker)
-     */
-    public void afterUpdate(PersistenceBroker broker) throws PersistenceBrokerException
-    {
-        // nothing to do by default
-    }
-    
-    /* (non-Javadoc)
-     * @see org.apache.ojb.broker.PersistenceBrokerAware#beforeDelete(org.apache.ojb.broker.PersistenceBroker)
-     */
-    public void beforeDelete(PersistenceBroker broker) throws PersistenceBrokerException
-    {
-        // nothing to do by default
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.ojb.broker.PersistenceBrokerAware#afterDelete(org.apache.ojb.broker.PersistenceBroker)
-     */
-    public void afterDelete(PersistenceBroker broker) throws PersistenceBrokerException
-    {
-        // nothing to do by default
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.ojb.broker.PersistenceBrokerAware#afterLookup(org.apache.ojb.broker.PersistenceBroker)
-     */
-    public void afterLookup(PersistenceBroker broker) throws PersistenceBrokerException
-    {
-        // update constraints to maintain mapping
-        if (constraints != null)
-        {
-            constraints.afterLookup();
-        }
     }
 }

Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/BaseSecurityConstraintsRef.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/BaseSecurityConstraintsRef.java?rev=350066&r1=350065&r2=350066&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/BaseSecurityConstraintsRef.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/BaseSecurityConstraintsRef.java Wed Nov 30 14:53:22 2005
@@ -68,4 +68,32 @@
     {
         this.name = name;
     }
+
+    /* (non-Javadoc)
+     * @see java.lang.Object#equals(java.lang.Object)
+     */
+    public boolean equals(Object o)
+    {
+        if (o instanceof BaseSecurityConstraintsRef)
+        {
+            if (name != null)
+            {
+                return name.equals(((BaseSecurityConstraintsRef)o).getName());
+            }
+            return (((BaseSecurityConstraintsRef)o).getName() == null);
+        }
+        return false;
+    }
+
+    /* (non-Javadoc)
+     * @see java.lang.Object#hashCode()
+     */
+    public int hashCode()
+    {
+        if (name != null)
+        {
+            return name.hashCode();
+        }
+        return 0;
+    }
 }

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=350066&r1=350065&r2=350066&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 Wed Nov 30 14:53:22 2005
@@ -17,6 +17,7 @@
 
 import java.security.AccessController;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -26,9 +27,9 @@
 import org.apache.jetspeed.om.folder.Folder;
 import org.apache.jetspeed.om.page.Fragment;
 import org.apache.jetspeed.om.page.PageSecurity;
+import org.apache.jetspeed.om.preference.FragmentPreference;
+import org.apache.jetspeed.om.preference.impl.FragmentPreferenceImpl;
 import org.apache.jetspeed.security.FragmentPermission;
-import org.apache.ojb.broker.PersistenceBroker;
-import org.apache.ojb.broker.PersistenceBrokerException;
 
 /**
  * FragmentImpl
@@ -39,7 +40,6 @@
 public class FragmentImpl extends BaseElementImpl implements Fragment
 {
     private List fragments;
-    private FragmentList fragmentsList;
     private String type;
     private String skin;
     private String decorator;
@@ -51,8 +51,11 @@
     private String extendedPropertyValue1;
     private String extendedPropertyName2;
     private String extendedPropertyValue2;
+    private List preferences;
 
-    private Map properties;
+    private FragmentList fragmentsList;
+    private FragmentPropertyMap propertiesMap;
+    private FragmentPreferenceList fragmentPreferences;
     private PageImpl page;
 
     public FragmentImpl()
@@ -61,6 +64,40 @@
     }
 
     /**
+     * accessFragments
+     *
+     * Access mutable persistent collection member for List wrappers.
+     *
+     * @return persistent collection
+     */
+    List accessFragments()
+    {
+        // create initial collection if necessary
+        if (fragments == null)
+        {
+            fragments = new ArrayList(4);
+        }
+        return fragments;
+    }
+
+    /**
+     * accessPreferences
+     *
+     * Access mutable persistent collection member for List wrappers.
+     *
+     * @return persistent collection
+     */
+    List accessPreferences()
+    {
+        // create initial collection if necessary
+        if (preferences == null)
+        {
+            preferences = new ArrayList(4);
+        }
+        return preferences;
+    }
+
+    /**
      * getPage
      *
      * Get page implementation that owns fragment.
@@ -171,6 +208,159 @@
         return matchedFragments;
     }
 
+    /**
+     * getPropertyMemberKeys
+     *
+     * Get valid explicit property member keys.
+     *
+     * @return list of property member keys with values
+     */
+    List getPropertyMemberKeys()
+    {
+        List keys = new ArrayList(5);
+        if (layoutRowProperty >= 0)
+        {
+            keys.add(ROW_PROPERTY_NAME);
+        }
+        if (layoutColumnProperty >= 0)
+        {
+            keys.add(COLUMN_PROPERTY_NAME);
+        }
+        if (layoutSizesProperty != null)
+        {
+            keys.add(SIZES_PROPERTY_NAME);
+        }
+        if ((extendedPropertyName1 != null) && (extendedPropertyValue1 != null))
+        {
+            keys.add(extendedPropertyName1);
+        }
+        if ((extendedPropertyName2 != null) && (extendedPropertyValue2 != null))
+        {
+            keys.add(extendedPropertyName2);
+        }
+        return keys;
+    }
+
+    /**
+     * getPropertyMember
+     *
+     * Get explicit property member.
+     *
+     * @param key property name
+     * @return property setting
+     */
+    String getPropertyMember(String key)
+    {
+        // set fragment explicit property member
+        if (key.equals(ROW_PROPERTY_NAME))
+        {
+            if (layoutRowProperty >= 0)
+            {
+                return String.valueOf(layoutRowProperty);
+            }
+        }
+        else if (key.equals(COLUMN_PROPERTY_NAME))
+        {
+            if (layoutColumnProperty >= 0)
+            {
+                return String.valueOf(layoutColumnProperty);
+            }
+        }
+        else if (key.equals(SIZES_PROPERTY_NAME))
+        {
+            return layoutSizesProperty;
+        }
+        else if (key.equals(extendedPropertyName1))
+        {
+            return extendedPropertyValue1;
+        }
+        else if (key.equals(extendedPropertyName2))
+        {
+            return extendedPropertyValue2;
+        }
+        return null;
+    }
+
+    /**
+     * setPropertyMember
+     *
+     * Set explicit property member.
+     *
+     * @param key property name
+     * @param value property setting
+     */
+    void setPropertyMember(String key, String value)
+    {
+        // set fragment explicit property member
+        if (key.equals(ROW_PROPERTY_NAME))
+        {
+            layoutRowProperty = Integer.parseInt(value);
+        }
+        else if (key.equals(COLUMN_PROPERTY_NAME))
+        {
+            layoutColumnProperty = Integer.parseInt(value);
+        }
+        else if (key.equals(SIZES_PROPERTY_NAME))
+        {
+            layoutSizesProperty = value;
+        }
+        else if (key.equals(extendedPropertyName1))
+        {
+            extendedPropertyValue1 = value;
+        }
+        else if (key.equals(extendedPropertyName2))
+        {
+            extendedPropertyValue2 = value;
+        }
+        else if (extendedPropertyName1 == null)
+        {
+            extendedPropertyName1 = key;
+            extendedPropertyValue1 = value;
+        }
+        else if (extendedPropertyName2 == null)
+        {
+            extendedPropertyName2 = key;
+            extendedPropertyValue2 = value;
+        }
+        else
+        {
+            throw new RuntimeException("Unable to set fragment property " + key + ", extended properties already used.");
+        }
+    }
+
+    /**
+     * clearPropertyMember
+     *
+     * Clear explicit property member.
+     *
+     * @param key property name
+     */
+    void clearPropertyMember(String key)
+    {
+        if (key.equals(ROW_PROPERTY_NAME))
+        {
+            layoutRowProperty = -1;
+        }
+        else if (key.equals(COLUMN_PROPERTY_NAME))
+        {
+            layoutColumnProperty = -1;
+        }
+        else if (key.equals(SIZES_PROPERTY_NAME))
+        {
+            layoutSizesProperty = null;
+        }
+        else if (key.equals(extendedPropertyName1))
+        {
+            extendedPropertyName1 = null;
+            extendedPropertyValue1 = null;
+        }
+        else if (key.equals(extendedPropertyName2))
+        {
+            extendedPropertyName2 = null;
+            extendedPropertyValue2 = null;
+        }
+    }
+
     /* (non-Javadoc)
      * @see org.apache.jetspeed.om.page.impl.BaseElementImpl#getEffectivePageSecurity()
      */
@@ -335,13 +525,9 @@
         // access rights to all fragments; otherwise, a copy of
         // the list will be returned and any modifications to the
         // set of fragments in the collection will not be preserved
-        if (fragments == null)
-        {
-            fragments = new ArrayList(4);
-        }
         if (fragmentsList == null)
         {
-            fragmentsList = new FragmentList(this, fragments);
+            fragmentsList = new FragmentList(this);
         }
         return filterFragmentsByAccess(fragmentsList);
     }
@@ -351,11 +537,7 @@
      */
     public String getProperty(String propName)
     {
-        if (properties != null)
-        {
-            return (String)properties.get(propName);
-        }
-        return null;
+        return (String)getProperties().get(propName);
     }
     
     /* (non-Javadoc)
@@ -363,13 +545,10 @@
      */
     public int getIntProperty(String propName)
     {
-        if (properties != null)
+        String propValue = (String)getProperties().get(propName);
+        if (propValue != null)
         {
-            String propValue = (String)properties.get(propName);
-            if (propValue != null)
-            {
-                return Integer.parseInt(propValue);
-    }
+            return Integer.parseInt(propValue);
         }
         return -1;
     }
@@ -380,11 +559,11 @@
     public Map getProperties()
     {
         // initialize and return writable properties map
-        if (properties == null)
+        if (propertiesMap == null)
         {
-            properties = new HashMap(4);
-    }
-        return properties;
+            propertiesMap = new FragmentPropertyMap(this);
+        }
+        return propertiesMap;
     }
     
     /* (non-Javadoc)
@@ -395,7 +574,7 @@
         // get standard int property
         return getIntProperty(ROW_PROPERTY_NAME);
     }
-
+    
     /* (non-Javadoc)
      * @see org.apache.jetspeed.om.page.Fragment#setLayoutRow(int)
      */
@@ -405,13 +584,13 @@
         if (row >= 0)
         {
             getProperties().put(ROW_PROPERTY_NAME, String.valueOf(row));
-    }
-        else if (properties != null)
+        }
+        else
         {
-            properties.remove(ROW_PROPERTY_NAME);
+            getProperties().remove(ROW_PROPERTY_NAME);
         }
     }
-
+    
     /* (non-Javadoc)
      * @see org.apache.jetspeed.om.page.Fragment#getLayoutColumn()
      */
@@ -420,7 +599,7 @@
         // get standard int property
         return getIntProperty(COLUMN_PROPERTY_NAME);
     }
-
+    
     /* (non-Javadoc)
      * @see org.apache.jetspeed.om.page.Fragment#setLayoutColumn(int)
      */
@@ -431,9 +610,9 @@
         {
             getProperties().put(COLUMN_PROPERTY_NAME, String.valueOf(column));
         }
-        else if (properties != null)
+        else
         {
-            properties.remove(COLUMN_PROPERTY_NAME);
+            getProperties().remove(COLUMN_PROPERTY_NAME);
         }
     }
 
@@ -456,9 +635,9 @@
         {
             getProperties().put(SIZES_PROPERTY_NAME, sizes);
         }
-        else if (properties != null)
+        else
         {
-            properties.remove(SIZES_PROPERTY_NAME);
+            getProperties().remove(SIZES_PROPERTY_NAME);
         }
     }
     
@@ -483,93 +662,36 @@
      */
     public List getPreferences()
     {
-        return null; // NYI
+        // return mutable preferences list
+        // by using list wrapper to manage
+        // element uniqueness
+        if (fragmentPreferences == null)
+        {
+            fragmentPreferences = new FragmentPreferenceList(this);
+        }
+        return fragmentPreferences;
     }
     
     /* (non-Javadoc)
-     * @see org.apache.ojb.broker.PersistenceBrokerAware#beforeUpdate(org.apache.ojb.broker.PersistenceBroker)
+     * @see org.apache.jetspeed.om.page.Fragment#setPreferences(java.util.List)
      */
-    public void beforeUpdate(PersistenceBroker broker) throws PersistenceBrokerException
+    public void setPreferences(List preferences)
     {
-        // propagate to super
-        super.beforeUpdate(broker);
-
-        // update concrete fields with properties
-        layoutRowProperty = -1;
-        layoutColumnProperty = -1;
-        layoutSizesProperty = null;
-        extendedPropertyName1 = null;
-        extendedPropertyValue1 = null;
-        extendedPropertyName2 = null;
-        extendedPropertyValue2 = null;
-        if ((properties != null) && !properties.isEmpty())
+        // set preferences by replacing existing
+        // entries with new elements if new collection
+        // is specified
+        List fragmentPreferences = getPreferences();
+        if (preferences != fragmentPreferences)
         {
-            Iterator propsIter = properties.entrySet().iterator();
-            while (propsIter.hasNext())
+            // replace all preferences
+            fragmentPreferences.clear();
+            if (preferences != null)
             {
-                Map.Entry prop = (Map.Entry)propsIter.next();
-                String propName = (String)prop.getKey();
-                String propValue = (String)prop.getValue();
-                if (propValue != null)
-                {
-                    if (propName.equals(ROW_PROPERTY_NAME))
-                    {
-                        layoutRowProperty = Integer.parseInt(propValue);
-                    }
-                    else if (propName.equals(COLUMN_PROPERTY_NAME))
-                    {
-                        layoutColumnProperty = Integer.parseInt(propValue);
-                    }
-                    else if (propName.equals(SIZES_PROPERTY_NAME))
-                    {
-                        layoutSizesProperty = propValue;
-                    }
-                    else if (extendedPropertyName1 == null)
-                    {
-                        extendedPropertyName1 = propName;
-                        extendedPropertyValue1 = propValue;
-                    }
-                    else if (extendedPropertyName2 == null)
-                    {
-                        extendedPropertyName2 = propName;
-                        extendedPropertyValue2 = propValue;
-                    }
-                }
+                fragmentPreferences.addAll(preferences);
             }
         }
     }
-
-    /* (non-Javadoc)
-     * @see org.apache.ojb.broker.PersistenceBrokerAware#afterLookup(org.apache.ojb.broker.PersistenceBroker)
-     */
-    public void afterLookup(PersistenceBroker broker) throws PersistenceBrokerException
-    {
-        // propagate to super
-        super.afterLookup(broker);
-
-        // load properties from concrete fields
-        if (layoutRowProperty >= 0)
-        {
-            getProperties().put(ROW_PROPERTY_NAME, String.valueOf(layoutRowProperty));
-        }
-        if (layoutColumnProperty >= 0)
-        {
-            getProperties().put(COLUMN_PROPERTY_NAME, String.valueOf(layoutColumnProperty));
-        }
-        if (layoutSizesProperty != null)
-        {
-            getProperties().put(SIZES_PROPERTY_NAME, layoutSizesProperty);
-        }
-        if ((extendedPropertyName1 != null) && (extendedPropertyValue1 != null))
-        {
-            getProperties().put(extendedPropertyName1, extendedPropertyValue1);
-        }
-        if ((extendedPropertyName2 != null) && (extendedPropertyValue2 != null))
-        {
-            getProperties().put(extendedPropertyName2, extendedPropertyValue2);
-        }
-    }
-
+    
     /**
      * filterFragmentsByAccess
      *

Modified: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentList.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentList.java?rev=350066&r1=350065&r2=350066&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentList.java (original)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentList.java Wed Nov 30 14:53:22 2005
@@ -15,10 +15,8 @@
  */
 package org.apache.jetspeed.om.page.impl;
 
-import java.util.Collection;
-import java.util.Iterator;
+import java.util.AbstractList;
 import java.util.List;
-import java.util.ListIterator;
 
 /**
  * FragmentList
@@ -26,50 +24,24 @@
  * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
  * @version $Id$
  */
-public class FragmentList implements List
+class FragmentList extends AbstractList
 {
     private FragmentImpl fragment;
-    private List fragments;
 
-    FragmentList(FragmentImpl fragment, List fragments)
+    FragmentList(FragmentImpl fragment)
     {
+        super();
         this.fragment = fragment;
-        this.fragments = fragments;
     }
 
-    /**
-     * getFragment
-     *
-     * Returns fragment implementation associated with this list.
-     *
-     * @return fragment implementation
-     */
-    FragmentImpl getFragment()
-    {
-        return fragment;
-    }
-
-    /* (non-Javadoc)
-     * @see java.util.List#add(java.lang.Object)
-     */
-    public boolean add(Object o)
-    {
-        // add and maintain page implementation reference
-        boolean added = fragments.add(o);
-        if (added && (fragment.getPage() != null) && (o instanceof FragmentImpl))
-        {
-            ((FragmentImpl)o).setPage(fragment.getPage());
-        }
-        return added;
-    }
-    
     /* (non-Javadoc)
      * @see java.util.List#add(int,java.lang.Object)
      */
     public void add(int index, Object element)
     {
+        // implement for modifiable AbstractList:
         // add and maintain page implementation reference
-        fragments.add(index, element);
+        fragment.accessFragments().add(index, element);
         if ((fragment.getPage() != null) && (element instanceof FragmentImpl))
         {
             ((FragmentImpl)element).setPage(fragment.getPage());
@@ -77,229 +49,12 @@
     }
 
     /* (non-Javadoc)
-     * @see java.util.List#add(java.util.Collection)
-     */
-    public boolean addAll(Collection c)
-    {
-        // add and maintain page implementation reference
-        boolean added = fragments.addAll(c);
-        if (added && (fragment.getPage() != null))
-        {
-            Iterator addedIter = c.iterator();
-            while (addedIter.hasNext())
-            {
-                Object o = addedIter.next();
-                if (fragments.contains(o) && (o instanceof FragmentImpl))
-                {
-                    ((FragmentImpl)o).setPage(fragment.getPage());
-                }
-            }
-        }
-        return added;
-    }
-
-    /* (non-Javadoc)
-     * @see java.util.List#add(int,java.util.Collection)
-     */
-    public boolean addAll(int index, Collection c)
-    {
-        // add and maintain page implementation reference
-        boolean added = fragments.addAll(index, c);
-        if (added && (fragment.getPage() != null))
-        {
-            Iterator addedIter = c.iterator();
-            while (addedIter.hasNext())
-            {
-                Object o = addedIter.next();
-                if (fragments.contains(o) && (o instanceof FragmentImpl))
-                {
-                    ((FragmentImpl)o).setPage(fragment.getPage());
-                }
-            }
-        }
-        return added;
-    }
-
-    /* (non-Javadoc)
-     * @see java.util.List#clear()
-     */
-    public void clear()
-    {
-        fragments.clear();
-    }
-
-    /* (non-Javadoc)
-     * @see java.util.List#contains(java.lang.Object)
-     */
-    public boolean contains(Object o)
-    {
-        return fragments.contains(o);
-    }
-
-    /* (non-Javadoc)
-     * @see java.util.ListcontainsAll#(java.util.Collection)
-     */
-    public boolean containsAll(Collection c)
-    {
-        return fragments.containsAll(c);
-    }
-
-    /* (non-Javadoc)
-     * @see java.util.List#equals(java.lang.Object)
-     */
-    public boolean equals(Object o)
-    {
-        return fragments.equals(o);
-    }
-
-    /* (non-Javadoc)
      * @see java.util.List#get(int)
      */
     public Object get(int index)
     {
-        return fragments.get(index);
-    }
-
-    /* (non-Javadoc)
-     * @see java.util.List#hashCode()
-     */
-    public int hashCode()
-    {
-        return fragments.hashCode();
-    }
-
-    /* (non-Javadoc)
-     * @see java.util.List#indexOf(java.lang.Object)
-     */
-    public int indexOf(Object o)
-    {
-        return fragments.indexOf(o);
-    }
-
-    /* (non-Javadoc)
-     * @see java.util.List#isEmpty()
-     */
-    public boolean isEmpty()
-    {
-        return fragments.isEmpty();
-    }
-
-    /* (non-Javadoc)
-     * @see java.util.List#iterator()
-     */
-    public Iterator iterator()
-    {
-        return fragments.iterator();
-    }
-
-    /* (non-Javadoc)
-     * @see java.util.List#lastIndexOf(java.lang.Object)
-     */
-    public int lastIndexOf(Object o)
-    {
-        return fragments.lastIndexOf(o);
-    }
-
-    /* (non-Javadoc)
-     * @see java.util.List#listIterator()
-     */
-    public ListIterator listIterator()
-    {
-        return listIterator(0);
-    }
-
-    /* (non-Javadoc)
-     * @see java.util.List#listIterator(int)
-     */
-    public ListIterator listIterator(final int index)
-    {
-        // return new iterator
-        return new ListIterator()
-            {
-                ListIterator iter = FragmentList.this.fragments.listIterator(index);
-
-                /* (non-Javadoc)
-                 * @see java.util.ListIterator#add(java.lang.Object)
-                 */
-                public void add(Object o)
-                {
-                    // add and maintain page implementation reference
-                    iter.add(o);
-                    if ((FragmentList.this.fragment.getPage() != null) && (o instanceof FragmentImpl))
-                    {
-                        ((FragmentImpl)o).setPage(FragmentList.this.fragment.getPage());
-                    }
-                }
-
-                /* (non-Javadoc)
-                 * @see java.util.ListIterator#hasNext()
-                 */
-                public boolean hasNext()
-                {
-                    return iter.hasNext();
-                }
-
-                /* (non-Javadoc)
-                 * @see java.util.ListIterator#hasPrevious()
-                 */
-                public boolean hasPrevious()
-                {
-                    return iter.hasPrevious();                    
-                }
-
-                /* (non-Javadoc)
-                 * @see java.util.ListIterator#next()
-                 */
-                public Object next()
-                {
-                    return iter.next();
-                }
-
-                /* (non-Javadoc)
-                 * @see java.util.ListIterator#nextIndex()
-                 */
-                public int nextIndex()
-                {
-                    return iter.nextIndex();
-                }
-
-                /* (non-Javadoc)
-                 * @see java.util.ListIterator#previous()
-                 */
-                public Object previous()
-                {
-                    return iter.previous();
-                }
-
-                /* (non-Javadoc)
-                 * @see java.util.ListIterator#previousIndex()
-                 */
-                public int previousIndex()
-                {
-                    return iter.previousIndex();
-                }
-
-                /* (non-Javadoc)
-                 * @see java.util.ListIterator#remove()
-                 */
-                public void remove()
-                {
-                    iter.remove();
-                }
-
-                /* (non-Javadoc)
-                 * @see java.util.ListIterator#set(java.lang.Object)
-                 */
-                public void set(Object o)
-                {
-                    // set and maintain page implementation reference
-                    iter.set(o);
-                    if ((FragmentList.this.fragment.getPage() != null) && (o instanceof FragmentImpl))
-                    {
-                        ((FragmentImpl)o).setPage(FragmentList.this.fragment.getPage());
-                    }
-                }
-            };
+        // implement for modifiable AbstractList
+        return fragment.accessFragments().get(index);
     }
 
     /* (non-Javadoc)
@@ -307,31 +62,8 @@
      */
     public Object remove(int index)
     {
-        return fragments.remove(index);
-    }
-
-    /* (non-Javadoc)
-     * @see java.util.List#remove(java.lang.Object)
-     */
-    public boolean remove(Object o)
-    {
-        return fragments.remove(o);
-    }
-
-    /* (non-Javadoc)
-     * @see java.util.List#removeAll(java.util.Collection)
-     */
-    public boolean removeAll(Collection c)
-    {
-        return fragments.removeAll(c);
-    }
-
-    /* (non-Javadoc)
-     * @see java.util.List#retainAll(java.util.Collection)
-     */
-    public boolean retainAll(Collection c)
-    {
-        return fragments.retainAll(c);
+        // implement for modifiable AbstractList
+        return fragment.accessFragments().remove(index);
     }
 
     /* (non-Javadoc)
@@ -339,8 +71,9 @@
      */
     public Object set(int index, Object element)
     {
+        // implement for modifiable AbstractList:
         // set and maintain page implementation reference
-        Object o = fragments.set(index, element);
+        Object o = fragment.accessFragments().set(index, element);
         if ((fragment.getPage() != null) && (element instanceof FragmentImpl))
         {
             ((FragmentImpl)element).setPage(fragment.getPage());
@@ -353,30 +86,7 @@
      */
     public int size()
     {
-        return fragments.size();
-    }
-
-    /* (non-Javadoc)
-     * @see java.util.List#subList(int, int)
-     */
-    public List subList(int fromIndex, int toIndex)
-    {
-        return fragments.subList(fromIndex, toIndex);
-    }
-
-    /* (non-Javadoc)
-     * @see java.util.List#toArray()
-     */
-    public Object[] toArray()
-    {
-        return fragments.toArray();
-    }
-
-    /* (non-Javadoc)
-     * @see java.util.List#toArray(java.lang.Object[])
-     */
-    public Object[] toArray(Object[] a) 
-    {
-        return fragments.toArray(a);
+        // implement for modifiable AbstractList
+        return fragment.accessFragments().size();
     }
 }

Added: portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentPreferenceImpl.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentPreferenceImpl.java?rev=350066&view=auto
==============================================================================
--- portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentPreferenceImpl.java (added)
+++ portals/jetspeed-2/trunk/components/page-manager/src/java/org/apache/jetspeed/om/page/impl/FragmentPreferenceImpl.java Wed Nov 30 14:53:22 2005
@@ -0,0 +1,148 @@
+/*
+ * Copyright 2005 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.page.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.jetspeed.om.preference.FragmentPreference;
+
+/**
+ * FragmentPreference
+ *
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+public class FragmentPreferenceImpl implements FragmentPreference
+{
+    private int id;
+    private String name;
+    private boolean readOnly;
+    private List values;
+
+    private FragmentPreferenceValueList preferenceValues;
+
+    /**
+     * accessValues
+     *
+     * Access mutable persistent collection member for List wrappers.
+     *
+     * @return persistent collection
+     */
+    List accessValues()
+    {
+        // create initial collection if necessary
+        if (values == null)
+        {
+            values = new ArrayList(4);
+        }
+        return values;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.preference.FragmentPreference#getName()
+     */
+    public String getName()
+    {
+        return name;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.preference.FragmentPreference#setName(java.lang.String)
+     */
+    public void setName(String name)
+    {
+        this.name = name;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.preference.FragmentPreference#isReadOnly()
+     */
+    public boolean isReadOnly()
+    {
+        return readOnly;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.preference.FragmentPreference#setReadOnly(boolean)
+     */
+    public void setReadOnly(boolean readOnly)
+    {
+        this.readOnly = readOnly;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.preference.FragmentPreference#getValueList()
+     */
+    public List getValueList()
+    {
+        // return mutable preference value list
+        // using list wrapper to manage value order
+        if (preferenceValues == null)
+        {
+            preferenceValues = new FragmentPreferenceValueList(this);
+        }
+        return preferenceValues;
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.preference.FragmentPreference#setValueList(java.util.List)
+     */
+    public void setValueList(List values)
+    {
+        // set preference values by replacing existing
+        // entries with new elements if new collection
+        // is specified
+        List preferenceValues = getValueList();
+        if (values != preferenceValues)
+        {
+            // replace all values
+            preferenceValues.clear();
+            if (values != null)
+            {
+                preferenceValues.addAll(values);
+            }
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see java.lang.Object#equals(java.lang.Object)
+     */
+    public boolean equals(Object o)
+    {
+        if (o instanceof FragmentPreferenceImpl)
+        {
+            if (name != null)
+            {
+                return name.equals(((FragmentPreferenceImpl)o).getName());
+            }
+            return (((FragmentPreferenceImpl)o).getName() == null);
+        }
+        return false;
+    }
+
+    /* (non-Javadoc)
+     * @see java.lang.Object#hashCode()
+     */
+    public int hashCode()
+    {
+        if (name != null)
+        {
+            return name.hashCode();
+        }
+        return 0;
+    }
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org