You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by rw...@apache.org on 2009/01/05 07:04:18 UTC

svn commit: r731466 [4/12] - in /portals/jetspeed-2/portal/branches/JPA_BRANCH: ./ components/jetspeed-cm/src/main/java/org/apache/jetspeed/components/ components/jetspeed-cm/src/main/java/org/apache/jetspeed/test/ components/jetspeed-page-manager/ com...

Modified: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageImpl.java?rev=731466&r1=731465&r2=731466&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageImpl.java (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageImpl.java Sun Jan  4 22:04:13 2009
@@ -52,7 +52,7 @@
 
     public PageImpl()
     {
-        super(new PageSecurityConstraintsImpl());
+        super(new PageSecurityConstraintsContextImpl());
     }
 
     /**
@@ -226,7 +226,7 @@
                 fragment.setSkin(addFragment.getSkin());
                 fragment.setDecorator(addFragment.getDecorator());
                 fragment.setState(addFragment.getState());
-                fragment.setSecurityConstraints(addFragment.getSecurityConstraints());
+                fragment.setSecurityConstraintsContext(addFragment.getSecurityConstraintsContext());
                 fragment.getProperties().clear();
                 fragment.getProperties().putAll(addFragment.getProperties());
                 fragment.setPreferences(addFragment.getPreferences());

Modified: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageMenuDefinitionElementList.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageMenuDefinitionElementList.java?rev=731466&r1=731465&r2=731466&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageMenuDefinitionElementList.java (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageMenuDefinitionElementList.java Sun Jan  4 22:04:13 2009
@@ -55,7 +55,7 @@
     /* (non-Javadoc)
      * @see java.util.List#add(int,java.lang.Object)
      */
-    public void add(int index, Object element)
+    public synchronized void add(int index, Object element)
     {
         // implement for modifiable AbstractList:
         // validate index
@@ -97,7 +97,7 @@
     /* (non-Javadoc)
      * @see java.util.List#get(int)
      */
-    public Object get(int index)
+    public synchronized Object get(int index)
     {
         // implement for modifiable AbstractList
         return menuDefinition.accessElements().get(index);
@@ -106,7 +106,7 @@
     /* (non-Javadoc)
      * @see java.util.List#remove(int)
      */
-    public Object remove(int index)
+    public synchronized Object remove(int index)
     {
         // implement for modifiable AbstractList
         return menuDefinition.accessElements().remove(index);
@@ -115,7 +115,7 @@
     /* (non-Javadoc)
      * @see java.util.List#set(int,java.lang.Object)
      */
-    public Object set(int index, Object element)
+    public synchronized Object set(int index, Object element)
     {
         // implement for modifiable AbstractList:
         // verify element
@@ -131,7 +131,7 @@
     /* (non-Javadoc)
      * @see java.util.List#size()
      */
-    public int size()
+    public synchronized int size()
     {
         // implement for modifiable AbstractList
         return menuDefinition.accessElements().size();

Modified: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageMenuDefinitionList.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageMenuDefinitionList.java?rev=731466&r1=731465&r2=731466&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageMenuDefinitionList.java (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageMenuDefinitionList.java Sun Jan  4 22:04:13 2009
@@ -17,10 +17,9 @@
 package org.apache.jetspeed.om.page.impl;
 
 import java.util.AbstractList;
+import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.jetspeed.page.impl.DatabasePageManagerUtils;
-
 
 /**
  * PageMenuDefinitionList
@@ -107,7 +106,7 @@
     {
         if (removedMenuDefinitions == null)
         {
-            removedMenuDefinitions = DatabasePageManagerUtils.createList();
+            removedMenuDefinitions = new ArrayList();
         }
         return removedMenuDefinitions;
     }
@@ -115,7 +114,7 @@
     /* (non-Javadoc)
      * @see java.util.List#add(int,java.lang.Object)
      */
-    public void add(int index, Object element)
+    public synchronized void add(int index, Object element)
     {
         // implement for modifiable AbstractList:
         // validate index
@@ -132,7 +131,7 @@
     /* (non-Javadoc)
      * @see java.util.List#get(int)
      */
-    public Object get(int index)
+    public synchronized Object get(int index)
     {
         // implement for modifiable AbstractList
         return page.accessMenus().get(index);
@@ -141,7 +140,7 @@
     /* (non-Javadoc)
      * @see java.util.List#remove(int)
      */
-    public Object remove(int index)
+    public synchronized Object remove(int index)
     {
         // implement for modifiable AbstractList:
         // save removed element 
@@ -156,7 +155,7 @@
     /* (non-Javadoc)
      * @see java.util.List#set(int,java.lang.Object)
      */
-    public Object set(int index, Object element)
+    public synchronized Object set(int index, Object element)
     {
         // implement for modifiable AbstractList:
         // verify menu definition
@@ -172,7 +171,7 @@
     /* (non-Javadoc)
      * @see java.util.List#size()
      */
-    public int size()
+    public synchronized int size()
     {
         // implement for modifiable AbstractList
         return page.accessMenus().size();

Copied: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageSecurityConstraintsContextImpl.java (from r728362, portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageSecurityConstraintsImpl.java)
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageSecurityConstraintsContextImpl.java?p2=portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageSecurityConstraintsContextImpl.java&p1=portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageSecurityConstraintsImpl.java&r1=728362&r2=731466&rev=731466&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageSecurityConstraintsImpl.java (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageSecurityConstraintsContextImpl.java Sun Jan  4 22:04:13 2009
@@ -17,15 +17,15 @@
 package org.apache.jetspeed.om.page.impl;
 
 /**
- * PageSecurityConstraintsImpl
+ * PageSecurityConstraintsContextImpl
  *
  * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
  * @version $Id$
  */
-public class PageSecurityConstraintsImpl extends SecurityConstraintsImpl
+public class PageSecurityConstraintsContextImpl extends SecurityConstraintsContextImpl
 {
     /* (non-Javadoc)
-     * @see org.apache.jetspeed.om.page.impl.SecurityConstraintsImpl#getSecurityConstraintClass()
+     * @see org.apache.jetspeed.om.page.impl.SecurityConstraintsContextImpl#getSecurityConstraintClass()
      */
     public Class getSecurityConstraintClass()
     {
@@ -33,7 +33,7 @@
     }
 
     /* (non-Javadoc)
-     * @see org.apache.jetspeed.om.page.impl.SecurityConstraintsImpl#getSecurityConstraintsRefClass()
+     * @see org.apache.jetspeed.om.page.impl.SecurityConstraintsContextImpl#getSecurityConstraintsRefClass()
      */
     public Class getSecurityConstraintsRefClass()
     {

Modified: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageSecurityConstraintsDefList.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageSecurityConstraintsDefList.java?rev=731466&r1=731465&r2=731466&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageSecurityConstraintsDefList.java (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageSecurityConstraintsDefList.java Sun Jan  4 22:04:13 2009
@@ -17,10 +17,9 @@
 package org.apache.jetspeed.om.page.impl;
 
 import java.util.AbstractList;
+import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.jetspeed.page.impl.DatabasePageManagerUtils;
-
 /**
  * PageSecurityConstraintsDefList
  *
@@ -85,7 +84,7 @@
     {
         if (removedConstraintsDefs == null)
         {
-            removedConstraintsDefs = DatabasePageManagerUtils.createList();
+            removedConstraintsDefs = new ArrayList();
         }
         return removedConstraintsDefs;
     }
@@ -93,7 +92,7 @@
     /* (non-Javadoc)
      * @see java.util.List#add(int,java.lang.Object)
      */
-    public void add(int index, Object element)
+    public synchronized void add(int index, Object element)
     {
         // implement for modifiable AbstractList:
         // validate index
@@ -112,7 +111,7 @@
     /* (non-Javadoc)
      * @see java.util.List#get(int)
      */
-    public Object get(int index)
+    public synchronized Object get(int index)
     {
         // implement for modifiable AbstractList
         return pageSecurity.accessConstraintsDefs().get(index);
@@ -121,7 +120,7 @@
     /* (non-Javadoc)
      * @see java.util.List#remove(int)
      */
-    public Object remove(int index)
+    public synchronized Object remove(int index)
     {
         // implement for modifiable AbstractList
         SecurityConstraintsDefImpl removed = (SecurityConstraintsDefImpl)pageSecurity.accessConstraintsDefs().remove(index);
@@ -138,7 +137,7 @@
     /* (non-Javadoc)
      * @see java.util.List#set(int,java.lang.Object)
      */
-    public Object set(int index, Object element)
+    public synchronized Object set(int index, Object element)
     {
         // implement for modifiable AbstractList:
         // verify constraints definition
@@ -156,7 +155,7 @@
     /* (non-Javadoc)
      * @see java.util.List#size()
      */
-    public int size()
+    public synchronized int size()
     {
         // implement for modifiable AbstractList
         return pageSecurity.accessConstraintsDefs().size();

Modified: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageSecurityConstraintsRefList.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageSecurityConstraintsRefList.java?rev=731466&r1=731465&r2=731466&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageSecurityConstraintsRefList.java (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/PageSecurityConstraintsRefList.java Sun Jan  4 22:04:13 2009
@@ -17,10 +17,9 @@
 package org.apache.jetspeed.om.page.impl;
 
 import java.util.AbstractList;
+import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.jetspeed.page.impl.DatabasePageManagerUtils;
-
 /**
  * PageSecurityConstraintsRefList
  *
@@ -85,7 +84,7 @@
     {
         if (removedConstraintsRefs == null)
         {
-            removedConstraintsRefs = DatabasePageManagerUtils.createList();
+            removedConstraintsRefs = new ArrayList();
         }
         return removedConstraintsRefs;
     }
@@ -93,7 +92,7 @@
     /* (non-Javadoc)
      * @see java.util.List#add(int,java.lang.Object)
      */
-    public void add(int index, Object element)
+    public synchronized void add(int index, Object element)
     {
         // implement for modifiable AbstractList:
         // validate index
@@ -135,7 +134,7 @@
     /* (non-Javadoc)
      * @see java.util.List#get(int)
      */
-    public Object get(int index)
+    public synchronized Object get(int index)
     {
         // implement for modifiable AbstractList:
         // unwrap constraints ref name string
@@ -145,7 +144,7 @@
     /* (non-Javadoc)
      * @see java.util.List#remove(int)
      */
-    public Object remove(int index)
+    public synchronized Object remove(int index)
     {
         // implement for modifiable AbstractList:
         // save removed element 
@@ -160,7 +159,7 @@
     /* (non-Javadoc)
      * @see java.util.List#set(int,java.lang.Object)
      */
-    public Object set(int index, Object element)
+    public synchronized Object set(int index, Object element)
     {
         // implement for modifiable AbstractList:
         // wrap and verify constraints ref name string
@@ -178,7 +177,7 @@
     /* (non-Javadoc)
      * @see java.util.List#size()
      */
-    public int size()
+    public synchronized int size()
     {
         // implement for modifiable AbstractList
         return pageSecurity.accessGlobalConstraintsRefs().size();

Modified: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintDefList.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintDefList.java?rev=731466&r1=731465&r2=731466&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintDefList.java (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintDefList.java Sun Jan  4 22:04:13 2009
@@ -55,7 +55,7 @@
     /* (non-Javadoc)
      * @see java.util.List#add(int,java.lang.Object)
      */
-    public void add(int index, Object element)
+    public synchronized void add(int index, Object element)
     {
         // implement for modifiable AbstractList:
         // validate index
@@ -97,7 +97,7 @@
     /* (non-Javadoc)
      * @see java.util.List#get(int)
      */
-    public Object get(int index)
+    public synchronized Object get(int index)
     {
         // implement for modifiable AbstractList
         return constraintsDef.accessConstraintDefs().get(index);
@@ -106,7 +106,7 @@
     /* (non-Javadoc)
      * @see java.util.List#remove(int)
      */
-    public Object remove(int index)
+    public synchronized Object remove(int index)
     {
         // implement for modifiable AbstractList
         return constraintsDef.accessConstraintDefs().remove(index);
@@ -115,7 +115,7 @@
     /* (non-Javadoc)
      * @see java.util.List#set(int,java.lang.Object)
      */
-    public Object set(int index, Object element)
+    public synchronized Object set(int index, Object element)
     {
         // implement for modifiable AbstractList:
         // verify constraint
@@ -131,7 +131,7 @@
     /* (non-Javadoc)
      * @see java.util.List#size()
      */
-    public int size()
+    public synchronized int size()
     {
         // implement for modifiable AbstractList
         return constraintsDef.accessConstraintDefs().size();

Modified: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintList.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintList.java?rev=731466&r1=731465&r2=731466&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintList.java (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintList.java Sun Jan  4 22:04:13 2009
@@ -28,9 +28,9 @@
  */
 class SecurityConstraintList extends AbstractList
 {
-    private SecurityConstraintsImpl constraints;
+    private SecurityConstraintsContextImpl constraints;
 
-    SecurityConstraintList(SecurityConstraintsImpl constraints)
+    SecurityConstraintList(SecurityConstraintsContextImpl constraints)
     {
         super();
         this.constraints = constraints;
@@ -62,7 +62,7 @@
     /* (non-Javadoc)
      * @see java.util.List#add(int,java.lang.Object)
      */
-    public void add(int index, Object element)
+    public synchronized void add(int index, Object element)
     {
         // implement for modifiable AbstractList:
         // validate index
@@ -106,7 +106,7 @@
     /* (non-Javadoc)
      * @see java.util.List#get(int)
      */
-    public Object get(int index)
+    public synchronized Object get(int index)
     {
         // implement for modifiable AbstractList
         return constraints.accessConstraints().get(index);
@@ -115,7 +115,7 @@
     /* (non-Javadoc)
      * @see java.util.List#remove(int)
      */
-    public Object remove(int index)
+    public synchronized Object remove(int index)
     {
         // implement for modifiable AbstractList
         Object removed = constraints.accessConstraints().remove(index);
@@ -130,7 +130,7 @@
     /* (non-Javadoc)
      * @see java.util.List#set(int,java.lang.Object)
      */
-    public Object set(int index, Object element)
+    public synchronized Object set(int index, Object element)
     {
         // implement for modifiable AbstractList:
         // verify constraint
@@ -148,7 +148,7 @@
     /* (non-Javadoc)
      * @see java.util.List#size()
      */
-    public int size()
+    public synchronized int size()
     {
         // implement for modifiable AbstractList
         return constraints.accessConstraints().size();

Copied: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintsContextImpl.java (from r728362, portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintsImpl.java)
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintsContextImpl.java?p2=portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintsContextImpl.java&p1=portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintsImpl.java&r1=728362&r2=731466&rev=731466&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintsImpl.java (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintsContextImpl.java Sun Jan  4 22:04:13 2009
@@ -16,22 +16,23 @@
  */
 package org.apache.jetspeed.om.page.impl;
 
+import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
-import org.apache.jetspeed.om.common.SecurityConstraints;
+import org.apache.jetspeed.om.common.SecurityConstraintsContext;
 import org.apache.jetspeed.om.page.PageSecurity;
 import org.apache.jetspeed.om.page.SecurityConstraintImpl;
 import org.apache.jetspeed.om.page.SecurityConstraintsDef;
 import org.apache.jetspeed.page.impl.DatabasePageManagerUtils;
 
 /**
- * SecurityConstraintsImpl
+ * SecurityConstraintsContextImpl
  *
  * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
  * @version $Id$
  */
-public class SecurityConstraintsImpl implements SecurityConstraints
+public class SecurityConstraintsContextImpl implements SecurityConstraintsContext
 {
     private String owner;
     private List constraints;
@@ -173,7 +174,7 @@
                 // fail if any action not permitted
                 if ((!actionPermitted && anyActionsPermitted) || actionNotPermitted)
                 {
-                    throw new SecurityException("SecurityConstraintsImpl.checkConstraints(): Access for " + action + " not permitted.");
+                    throw new SecurityException("SecurityConstraintsContextImpl.checkConstraints(): Access for " + action + " not permitted.");
                 }
             }
         }
@@ -184,7 +185,7 @@
             if ((getOwner() != null) && !actions.isEmpty())
             {
                 String action = (String)actions.get(0);
-                throw new SecurityException("SecurityConstraintsImpl.checkConstraints(): Access for " + action + " not permitted, (not owner).");
+                throw new SecurityException("SecurityConstraintsContextImpl.checkConstraints(): Access for " + action + " not permitted, (not owner).");
             }
         }
     }
@@ -213,7 +214,7 @@
         }
 
         // construct new ordered security constraints list
-        allConstraints = DatabasePageManagerUtils.createList();
+        allConstraints = new ArrayList();
 
         // add any defined security constraints
         if ((getSecurityConstraints() != null) && !getSecurityConstraints().isEmpty())
@@ -279,7 +280,7 @@
                 {
                     if (constraints == null)
                     {
-                        constraints = DatabasePageManagerUtils.createList();
+                        constraints = new ArrayList();
                     }
                     constraints.addAll(securityConstraintsDef.getSecurityConstraints());
                 }

Modified: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintsDefImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintsDefImpl.java?rev=731466&r1=731465&r2=731466&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintsDefImpl.java (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintsDefImpl.java Sun Jan  4 22:04:13 2009
@@ -31,7 +31,7 @@
 {
     private int id;
     private String name;
-    private List constraintDefs = DatabasePageManagerUtils.createList();
+    private List constraintDefs;
 
     private SecurityConstraintDefList securityConstraintDefs;
 

Modified: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintsRefList.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintsRefList.java?rev=731466&r1=731465&r2=731466&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintsRefList.java (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/impl/SecurityConstraintsRefList.java Sun Jan  4 22:04:13 2009
@@ -17,10 +17,9 @@
 package org.apache.jetspeed.om.page.impl;
 
 import java.util.AbstractList;
+import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.jetspeed.page.impl.DatabasePageManagerUtils;
-
 /**
  * SecurityConstraintsRefList
  *
@@ -29,11 +28,11 @@
  */
 class SecurityConstraintsRefList extends AbstractList
 {
-    private SecurityConstraintsImpl constraints;
+    private SecurityConstraintsContextImpl constraints;
 
     private List removedConstraintsRefs;
 
-    SecurityConstraintsRefList(SecurityConstraintsImpl constraints)
+    SecurityConstraintsRefList(SecurityConstraintsContextImpl constraints)
     {
         super();
         this.constraints = constraints;
@@ -105,7 +104,7 @@
     {
         if (removedConstraintsRefs == null)
         {
-            removedConstraintsRefs = DatabasePageManagerUtils.createList();
+            removedConstraintsRefs = new ArrayList();
         }
         return removedConstraintsRefs;
     }
@@ -113,7 +112,7 @@
     /* (non-Javadoc)
      * @see java.util.List#add(int,java.lang.Object)
      */
-    public void add(int index, Object element)
+    public synchronized void add(int index, Object element)
     {
         // implement for modifiable AbstractList:
         // validate index
@@ -157,7 +156,7 @@
     /* (non-Javadoc)
      * @see java.util.List#get(int)
      */
-    public Object get(int index)
+    public synchronized Object get(int index)
     {
         // implement for modifiable AbstractList:
         // unwrap constraints ref name string
@@ -167,7 +166,7 @@
     /* (non-Javadoc)
      * @see java.util.List#remove(int)
      */
-    public Object remove(int index)
+    public synchronized Object remove(int index)
     {
         // implement for modifiable AbstractList
         BaseSecurityConstraintsRef removed = (BaseSecurityConstraintsRef)constraints.accessConstraintsRefs().remove(index);
@@ -184,7 +183,7 @@
     /* (non-Javadoc)
      * @see java.util.List#set(int,java.lang.Object)
      */
-    public Object set(int index, Object element)
+    public synchronized Object set(int index, Object element)
     {
         // implement for modifiable AbstractList:
         // wrap and verify constraints ref name string
@@ -204,7 +203,7 @@
     /* (non-Javadoc)
      * @see java.util.List#size()
      */
-    public int size()
+    public synchronized int size()
     {
         // implement for modifiable AbstractList
         return constraints.accessConstraintsRefs().size();

Added: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/jpa/BaseElementImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/jpa/BaseElementImpl.java?rev=731466&view=auto
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/jpa/BaseElementImpl.java (added)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/jpa/BaseElementImpl.java Sun Jan  4 22:04:13 2009
@@ -0,0 +1,536 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.om.page.jpa;
+
+import java.security.AccessController;
+import java.security.Permission;
+import java.security.Principal;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.security.auth.Subject;
+
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.Transient;
+import javax.persistence.Version;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.jetspeed.JetspeedActions;
+import org.apache.jetspeed.om.common.SecurityConstraintsContext;
+import org.apache.jetspeed.om.page.BaseElement;
+import org.apache.jetspeed.om.page.PageSecurity;
+import org.apache.jetspeed.om.page.SecurityConstraintImpl;
+import org.apache.jetspeed.page.PageManager;
+import org.apache.jetspeed.page.jpa.DatabasePageManager;
+import org.apache.jetspeed.security.Group;
+import org.apache.jetspeed.security.JSSubject;
+import org.apache.jetspeed.security.PermissionFactory;
+import org.apache.jetspeed.security.Role;
+import org.apache.jetspeed.security.User;
+
+/**
+ * BaseElementImpl
+ *
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+@MappedSuperclass
+public abstract class BaseElementImpl extends SecurityConstraintsContextImpl implements BaseElement
+{
+    private static final Log log = LogFactory.getLog(BaseElementImpl.class);
+
+    @Id
+    @GeneratedValue (strategy=GenerationType.AUTO)
+    private int id;
+    @Version
+    @Column (name="JPA_VERSION")
+    private int jpaVersion;
+    @Basic
+    @Column (name="NAME")
+    private String name;
+
+    @Transient
+    private DatabasePageManager pageManager;
+    @Transient
+    private boolean constraintsEnabled;
+    @Transient
+    private boolean permissionsEnabled;
+    @Transient
+    private long cachedConstraintsVersion;
+
+    private static PermissionFactory pf;
+    
+    public static void setPermissionsFactory(PermissionFactory pf)
+    {
+        BaseElementImpl.pf = pf;
+    }
+
+    /**
+     * Default constructor.
+     */
+    protected BaseElementImpl()
+    {
+        // set up owning relationship for embedded context,
+        // (see comments below)
+        setOwningObject(this);
+    }
+    
+    /**
+     * getName
+     *
+     * @return element name
+     */
+    public String getName()
+    {
+        return name;
+    }
+
+    /**
+     * setName
+     *
+     * @param name element name
+     */
+    public void setName(String name)
+    {
+        this.name = name;
+    }
+
+    /**
+     * Return page manager for this element.
+     * 
+     * @return infused page manager.
+     */
+    public PageManager getPageManager()
+    {
+        // page manager should never be null
+        if (pageManager == null)
+        {
+            // log error since this is unexpected
+            log.error("Element "+name+" not managed: operations probably invoked before element added to page manager");
+        }
+        return pageManager;
+    }
+
+    /**
+     * setPageManager
+     *
+     * Infuses page manager for use by this element.
+     *
+     * @param pageManager page manager that manages this element.
+     */
+    public void setPageManager(DatabasePageManager pageManager)
+    {
+        this.pageManager = pageManager;
+    }
+
+    /**
+     * setConstraintsEnabled
+     *
+     * @param enabled enable/disable security constraints checks
+     */
+    public void setConstraintsEnabled(boolean enabled)
+    {
+        constraintsEnabled = enabled;
+    }
+    
+    /**
+     * setPermissionsEnabled
+     *
+     * @param enabled enable/disable security permissions checks
+     */
+    public void setPermissionsEnabled(boolean enabled)
+    {
+        permissionsEnabled = enabled;
+    }
+
+    /**
+     * grantViewActionAccess
+     *
+     * @return granted access for view action
+     */
+    public boolean grantViewActionAccess()
+    {
+        // by default, access must be checked
+        return false;
+    }
+
+    /**
+     * getEffectivePageSecurity
+     *
+     * @return effective page security object
+     */
+    public PageSecurity getEffectivePageSecurity()
+    {
+        // no page security available by default
+        return null;
+    }
+
+    /**
+     * checkConstraints
+     *
+     * Check fully parameterized principal against specified security constraint scope.
+     *
+     * @param actions actions to check
+     * @param userPrincipals principal users list
+     * @param rolePrincipals principal roles list
+     * @param groupPrincipals principal group list
+     * @param checkNodeOnly check node scope only
+     * @param checkParentsOnly check parent folder scope only
+     * @throws SecurityException
+     */
+    public void checkConstraints(List actions, List userPrincipals, List rolePrincipals, List groupPrincipals, boolean checkNodeOnly, boolean checkParentsOnly) throws SecurityException
+    {
+        // check node constraints if available
+        SecurityConstraintsContextImpl constraints = (SecurityConstraintsContextImpl)getSecurityConstraintsContext();
+        if ((constraints != null) && !constraints.isEmpty())
+        {
+            constraints.checkConstraints(actions, userPrincipals, rolePrincipals, groupPrincipals, getEffectivePageSecurity());
+        }
+    }
+
+    /**
+     * getLogicalPermissionPath
+     *
+     * @return path used for permissions checks
+     */
+    public String getLogicalPermissionPath()
+    {
+        // same as physical path by default
+        return getPhysicalPermissionPath();
+    }
+
+    /**
+     * getPhysicalPermissionPath
+     *
+     * @return path used for permissions checks
+     */
+    public String getPhysicalPermissionPath()
+    {
+        // no permissions path available by default
+        return null;
+    }
+
+    /**
+     * checkPermissions
+     *
+     * @param mask mask of actions to check
+     * @param checkNodeOnly check node scope only
+     * @param checkParentsOnly check parent folder scope only
+     * @throws SecurityException
+     */
+    public void checkPermissions(int mask, boolean checkNodeOnly, boolean checkParentsOnly) throws SecurityException
+    {
+        // check page and folder permissions
+        String physicalPermissionPath = getPhysicalPermissionPath();
+        if (physicalPermissionPath != null)
+        {
+            // check permissions using physical path
+            try
+            {
+                checkPermissions(physicalPermissionPath, mask, checkNodeOnly, checkParentsOnly);
+            }
+            catch (SecurityException physicalSE)
+            {
+                // fallback check using logical path if available and different
+                String logicalPermissionPath = getLogicalPermissionPath();
+                if ((logicalPermissionPath != null) && !logicalPermissionPath.equals(physicalPermissionPath))
+                {
+                    checkPermissions(logicalPermissionPath, mask, checkNodeOnly, checkParentsOnly);
+                }
+                else
+                {
+                    throw physicalSE;
+                }
+            }
+        }
+    }
+
+    /**
+     * checkPermissions
+     *
+     * @param path permissions path to check
+     * @param mask mask of actions to check
+     * @param checkNodeOnly check node scope only
+     * @param checkParentsOnly check parent folder scope only
+     * @throws SecurityException
+     */
+    public void checkPermissions(String path, int mask, boolean checkNodeOnly, boolean checkParentsOnly) throws SecurityException
+    {
+        // check actions permissions
+        try
+        {
+            // check for granted page permissions
+            AccessController.checkPermission((Permission)pf.newPermission(pf.PAGE_PERMISSION, path, mask));
+        }
+        catch (SecurityException se)
+        {
+            // fallback check for granted folder permissions
+            AccessController.checkPermission((Permission)pf.newPermission(pf.FOLDER_PERMISSION, path, mask));
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.common.SecuredResource#getConstraintsEnabled()
+     */
+    public boolean getConstraintsEnabled()
+    {
+        return constraintsEnabled;
+    }
+    
+    /* (non-Javadoc)
+     * @see java.lang.Object#equals(java.lang.Object)
+     */
+    public boolean equals(Object o)
+    {
+        // compare element by id
+        return ((o != null) && getClass().equals(o.getClass()) && (id != 0) && (id == ((BaseElementImpl)o).id));
+    }
+
+    /* (non-Javadoc)
+     * @see java.lang.Object#hashCode()
+     */
+    public int hashCode()
+    {
+        // use id to generate hashCode
+        return id;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.common.SecuredResource#getSecurityConstraintsContext()
+     */
+    public SecurityConstraintsContext getSecurityConstraintsContext()
+    {
+        long managedCachedConstraintsVersion = pageManager.getCachedConstraintsVersion();
+        if (cachedConstraintsVersion < managedCachedConstraintsVersion)
+        {
+            resetCachedSecurityConstraints();
+            cachedConstraintsVersion = managedCachedConstraintsVersion;
+        }
+        return accessSecurityConstraintsContext();
+    }
+    
+    /**
+     * Access derived class security constraints.
+     * 
+     * @return element security constraints.
+     */
+    protected abstract SecurityConstraintsContextImpl accessSecurityConstraintsContext();
+    
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.common.SecuredResource#setSecurityConstraintsContext(org.apache.jetspeed.om.common.SecurityConstraintsContext)
+     */
+    public void setSecurityConstraintsContext(SecurityConstraintsContext constraintsContext)
+    {
+        SecurityConstraintsContextImpl baseElementConstraintsContext = (SecurityConstraintsContextImpl)getSecurityConstraintsContext();
+        if (baseElementConstraintsContext != null)
+        {
+            // set constraints configuration for instance
+            baseElementConstraintsContext.setOwner(constraintsContext.getOwner());
+            baseElementConstraintsContext.setSecurityConstraints(constraintsContext.getSecurityConstraints());
+            baseElementConstraintsContext.setSecurityConstraintsRefs(constraintsContext.getSecurityConstraintsRefs());
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.common.SecuredResource#checkConstraints(java.lang.String)
+     */
+    public void checkConstraints(String actions) throws SecurityException
+    {
+        // skip checks if not enabled
+        if (!getConstraintsEnabled())
+        {
+            return;
+        }
+
+        // validate specified actions
+        if (actions == null)
+        {
+            throw new SecurityException("BaseElementImpl.checkConstraints(): No actions specified.");
+        }
+
+        // get action names lists; separate view and other
+        // actions to mimic file system permissions logic
+        List viewActionList = SecurityConstraintImpl.parseCSVList(actions);
+        List otherActionsList = null;
+        if (viewActionList.size() == 1)
+        {
+            if (!viewActionList.contains(JetspeedActions.VIEW))
+            {
+                otherActionsList = viewActionList;
+                viewActionList = null;
+            }
+        }
+        else
+        {
+            otherActionsList = viewActionList;
+            viewActionList = null;
+            if (otherActionsList.remove(JetspeedActions.VIEW))
+            {
+                viewActionList = new ArrayList();
+                viewActionList.add(JetspeedActions.VIEW);
+            }
+        }
+
+        // get current request context subject
+        Subject subject = JSSubject.getSubject(AccessController.getContext());
+        if (subject == null)
+        {
+            throw new SecurityException("BaseElementImpl.checkConstraints(): Missing JSSubject.");
+        }
+
+        // get user/group/role principal names
+        List userPrincipals = null;
+        List rolePrincipals = null;
+        List groupPrincipals = null;
+        Iterator principals = subject.getPrincipals().iterator();
+        while (principals.hasNext())
+        {
+            Principal principal = (Principal) principals.next();
+            if (principal instanceof User)
+            {
+                if (userPrincipals == null)
+                {
+                    userPrincipals = new LinkedList();
+                }
+                userPrincipals.add(principal.getName());
+            }
+            else if (principal instanceof Role)
+            {
+                if (rolePrincipals == null)
+                {
+                    rolePrincipals = new LinkedList();
+                }
+                rolePrincipals.add(principal.getName());
+            }
+            else if (principal instanceof Group)
+            {
+                if (groupPrincipals == null)
+                {
+                    groupPrincipals = new LinkedList();
+                }
+                groupPrincipals.add(principal.getName());
+            }
+        }
+
+        // check constraints using parsed action and access lists
+        if (viewActionList != null)
+        {
+            checkConstraints(viewActionList, userPrincipals, rolePrincipals, groupPrincipals, false, grantViewActionAccess());
+        }
+        if (otherActionsList != null)
+        {
+            checkConstraints(otherActionsList, userPrincipals, rolePrincipals, groupPrincipals, true, false);
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.page.jpa.SecurityConstraintsContextImpl#resetCachedSecurityConstraints()
+     */
+    public void resetCachedSecurityConstraints()
+    {
+        // propagate to constraints
+        SecurityConstraintsContextImpl constraintsContext = accessSecurityConstraintsContext();
+        if (constraintsContext != null)
+        {
+            if (constraintsContext != this)
+            {
+                constraintsContext.resetCachedSecurityConstraints();                
+            }
+            else
+            {
+                super.resetCachedSecurityConstraints();
+            }
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.common.SecuredResource#getPermissionsEnabled()
+     */
+    public boolean getPermissionsEnabled()
+    {
+        return permissionsEnabled;
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.common.SecuredResource#checkPermissions(java.lang.String)
+     */
+    public void checkPermissions(int mask) throws SecurityException
+    {
+        // skip checks if not enabled
+        if (!getPermissionsEnabled())
+        {
+            return;
+        }
+
+        // separate view and other actions to mimic file system permissions logic
+        boolean viewAction = (mask & JetspeedActions.MASK_VIEW) == JetspeedActions.MASK_VIEW;
+        int otherMask = mask & ~JetspeedActions.MASK_VIEW;
+
+        // check permissions using parsed actions
+        if (viewAction)
+        {
+            checkPermissions(JetspeedActions.MASK_VIEW, false, grantViewActionAccess());
+        }
+        if (otherMask != 0)
+        {
+            checkPermissions(otherMask, true, false);
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.common.SecuredResource#checkAccess(java.lang.String)
+     */
+    public void checkAccess(String actions) throws SecurityException
+    {
+        // check access permissions and constraints as enabled
+        if (getPermissionsEnabled())
+        {
+            int mask = pf.parseActions(actions);
+            checkPermissions(mask);
+        }
+        if (getConstraintsEnabled())
+        {
+            checkConstraints(actions);
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.page.BaseElement#getId()
+     */
+    public String getId()
+    {
+        return Integer.toString(id);
+    }
+
+    /**
+     * Test whether element is newly created.
+     * 
+     * @return new status of element.
+     */
+    public boolean isNew()
+    {
+        return (id == 0);
+    }
+}

Added: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/jpa/BaseMetadataLocalizedFieldImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/jpa/BaseMetadataLocalizedFieldImpl.java?rev=731466&view=auto
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/jpa/BaseMetadataLocalizedFieldImpl.java (added)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/jpa/BaseMetadataLocalizedFieldImpl.java Sun Jan  4 22:04:13 2009
@@ -0,0 +1,238 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.om.page.jpa;
+
+import java.util.Locale;
+import java.util.StringTokenizer;
+
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.PostLoad;
+import javax.persistence.PrePersist;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.Transient;
+import javax.persistence.Version;
+
+import org.apache.jetspeed.om.portlet.LocalizedField;
+import org.apache.jetspeed.util.HashCodeBuilder;
+import org.apache.jetspeed.util.JetspeedLocale;
+
+@MappedSuperclass
+public class BaseMetadataLocalizedFieldImpl implements LocalizedField
+{
+    @Id
+    @GeneratedValue (strategy=GenerationType.AUTO)
+    @Column (name="METADATA_ID")
+    private int id;
+    @Version
+    @Column (name="JPA_VERSION")
+    private int jpaVersion;
+    @Basic
+    @Column (name="VALUE")
+    private String value;
+    @Basic
+    @Column (name="NAME")
+    private String name;
+    @Basic
+    @Column (name="LOCALE")
+    private String localeField;
+
+    @PostLoad
+    private void postLoad()
+    {
+        locale = stringToLocale(localeField);
+    }    
+    @PrePersist
+    private void prePersist()
+    {
+        localeField = localeToString(locale);
+    }
+    
+    @Transient
+    private Locale locale;
+    
+    /**
+     * Explicitly set inverse relationship when this object
+     * is added to a one-to-many collection. JPA does not
+     * manage bidirectional relationships.
+     * 
+     * @param inverse inverse relationship owning object.
+     */
+    public void setInverseRelationship(Object inverse)
+    {
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.portlet.LocalizedField#getLocale()
+     */
+    public Locale getLocale()
+    {
+        return locale;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.portlet.LocalizedField#getName()
+     */
+    public String getName()
+    {
+        return name;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.portlet.LocalizedField#getValue()
+     */
+    public String getValue()
+    {
+        return value;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.portlet.LocalizedField#setLocale(java.util.Locale)
+     */
+    public void setLocale(Locale locale)
+    {
+        this.locale = locale;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.portlet.LocalizedField#setName(java.lang.String)
+     */
+    public void setName(String name)
+    {
+        this.name = name;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.portlet.LocalizedField#setValue(java.lang.String)
+     */
+    public void setValue(String value)
+    {
+        this.value = value;
+    }
+
+    /* (non-Javadoc)
+     * @see java.lang.Object#toString()
+     */
+    public String toString()
+    {
+        return "Name: " + name + " Value: " + value + " Locale: " + locale;
+    }
+    
+    /* (non-Javadoc)
+     * @see java.lang.Object#equals(java.lang.Object)
+     */
+    public boolean equals(Object o)
+    {
+        boolean result = false;
+        if (o instanceof BaseMetadataLocalizedFieldImpl)
+        {
+            BaseMetadataLocalizedFieldImpl other = (BaseMetadataLocalizedFieldImpl)o;
+            result = (this.name == null) ? (other.name == null) : (this.name.equals(other.name));
+            result = result && ((this.value == null) ? (other.value == null) : (this.value.equals(other.value)));
+            result = result && ((this.locale == null) ? (other.locale == null) : (this.locale.equals(other.locale)));
+        }
+        return result;
+    }
+    
+    /* (non-Javadoc)
+     * @see java.lang.Object#hashCode()
+     */
+    public int hashCode()
+    {
+        HashCodeBuilder hasher = new HashCodeBuilder(27, 101);
+        hasher.append(name).append(value);
+        if(locale != null)
+        {    
+            hasher.append(locale.getCountry()).append(locale.getLanguage()).append(locale.getVariant());
+        }
+        return hasher.toHashCode();
+    }
+    
+    /**
+     * Convert locale into locale string field value.
+     * 
+     * @param locale locale to convert.
+     * @return locale string field value.
+     */
+    public static String localeToString(Locale locale)
+    {
+        String country = locale.getCountry();
+        String language = locale.getLanguage();
+        String variant = locale.getVariant();
+        StringBuffer buffer = new StringBuffer(40);
+        if (language != null)
+        {
+            buffer.append(language);
+        }
+        buffer.append(',');
+        if (country != null)
+        {
+            buffer.append(country);
+        }
+        buffer.append(',');
+        if (variant != null)
+        {
+            buffer.append(variant);
+        }
+        return buffer.toString().trim();
+    }
+
+    /**
+     * Convert locale string field value into locale.
+     * 
+     * @param locale locale string field value to convert.
+     * @return locale.
+     */
+    public static Locale stringToLocale(String locale)
+    {
+        StringTokenizer tokenizer = new StringTokenizer(locale, ",");
+        if (tokenizer.hasMoreTokens() == false)            
+        {
+            return JetspeedLocale.getDefaultLocale();
+        }
+        String language = tokenizer.nextToken().trim();
+        String country = null;
+        String variant = null;
+        if (tokenizer.hasMoreTokens())
+        {
+            country = tokenizer.nextToken().trim();
+        }           
+        if (tokenizer.hasMoreTokens())
+        {
+            variant = tokenizer.nextToken().trim();
+        }
+        if (country != null && language != null && variant != null)
+        {
+            return new Locale (language, country, variant);
+        }
+        else if (country != null && language != null)
+        {
+            return new Locale(language, country);
+        }
+        else if (language != null)
+        {
+            return new Locale(language, ""); // JDK 1.3 compatibility
+        }
+        else
+        {
+            return JetspeedLocale.getDefaultLocale();
+        }
+    }
+}

Added: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/jpa/BaseSecurityConstraintImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/jpa/BaseSecurityConstraintImpl.java?rev=731466&view=auto
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/jpa/BaseSecurityConstraintImpl.java (added)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/jpa/BaseSecurityConstraintImpl.java Sun Jan  4 22:04:13 2009
@@ -0,0 +1,195 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.om.page.jpa;
+
+import java.util.List;
+
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.PostLoad;
+import javax.persistence.PrePersist;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.Transient;
+import javax.persistence.Version;
+
+import org.apache.jetspeed.om.page.AbstractSecurityConstraintImpl;
+
+/**
+ * <p>
+ * BaseSecurityConstraintImpl
+ * </p>
+ * <p>
+ *
+ * </p>
+ * @author <a href="mailto:rwatler@finali.com">Randy Watler</a>
+ * @version $Id: SecurityConstraintImpl.java 516448 2007-03-09 16:25:47Z ate $
+ *
+ */
+@MappedSuperclass
+public class BaseSecurityConstraintImpl extends AbstractSecurityConstraintImpl
+{
+    @Id
+    @GeneratedValue (strategy=GenerationType.AUTO)
+    @Column (name="CONSTRAINT_ID")
+    private int id;
+    @Version
+    @Column (name="JPA_VERSION")
+    private int jpaVersion;
+    @Basic
+    @Column (name="APPLY_ORDER")
+    private int applyOrder;
+    @Basic
+    @Column (name="USER_PRINCIPALS_ACL")
+    private String usersACLField;
+    @Basic
+    @Column (name="ROLE_PRINCIPALS_ACL")
+    private String rolesACLField;
+    @Basic
+    @Column (name="GROUP_PRINCIPALS_ACL")
+    private String groupsACLField;
+    @Basic
+    @Column (name="PERMISSIONS_ACL")
+    private String permissionsACLField;
+    
+    @PostLoad
+    private void postLoad()
+    {
+        usersList = parseCSVList(usersACLField);
+        rolesList = parseCSVList(rolesACLField);
+        groupsList = parseCSVList(groupsACLField);
+        permissionsList = parseCSVList(permissionsACLField);
+    }    
+    @PrePersist
+    private void prePersist()
+    {
+        usersACLField = formatCSVList(usersList);
+        rolesACLField = formatCSVList(rolesList);
+        groupsACLField = formatCSVList(groupsList);
+        permissionsACLField = formatCSVList(permissionsList);
+    }
+    
+    @Transient
+    private List usersList;
+    @Transient
+    private List rolesList;
+    @Transient
+    private List groupsList;
+    @Transient
+    private List permissionsList;
+
+    /**
+     * Explicitly set inverse relationship when this object
+     * is added to a one-to-many collection. JPA does not
+     * manage bidirectional relationships.
+     * 
+     * @param inverse inverse relationship owning object.
+     */
+    public void setInverseRelationship(Object inverse)
+    {
+    }
+    
+    /**
+     * getApplyOrder
+     *
+     * @return apply order for constraints
+     */
+    public int getApplyOrder()
+    {
+        return applyOrder;
+    }
+
+    /**
+     * setApplyOrder
+     *
+     * @param order apply order for constraints
+     */
+    public void setApplyOrder(int order)
+    {
+        applyOrder = order;
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.common.SecurityConstraint#getUsers()
+     */
+    public List getUsers()
+    {
+        return usersList;
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.page.AbstractSecurityConstraintImpl#setUsers(java.util.List)
+     */
+    public void setUsers(List users)
+    {
+        usersList = users;
+        super.setUsers(users);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.common.SecurityConstraint#getRoles()
+     */
+    public List getRoles()
+    {
+        return rolesList;
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.page.AbstractSecurityConstraintImpl#setRoles(java.util.List)
+     */
+    public void setRoles(List roles)
+    {
+        rolesList = roles;
+        super.setRoles(roles);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.common.SecurityConstraint#getGroups()
+     */
+    public List getGroups()
+    {
+        return groupsList;
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.page.AbstractSecurityConstraintImpl#setGroups(java.util.List)
+     */
+    public void setGroups(List groups)
+    {
+        groupsList = groups;
+        super.setGroups(groups);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.common.SecurityConstraint#getPermissions()
+     */
+    public List getPermissions()
+    {
+        return permissionsList;
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.om.page.AbstractSecurityConstraintImpl#setPermissions(java.util.List)
+     */
+    public void setPermissions(List permissions)
+    {
+        permissionsList = permissions;
+        super.setPermissions(permissions);
+    }
+}

Added: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/jpa/BaseSecurityConstraintsRef.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/jpa/BaseSecurityConstraintsRef.java?rev=731466&view=auto
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/jpa/BaseSecurityConstraintsRef.java (added)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/jpa/BaseSecurityConstraintsRef.java Sun Jan  4 22:04:13 2009
@@ -0,0 +1,128 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.om.page.jpa;
+
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.Version;
+
+/**
+ * BaseSecurityConstraintsRef
+ *
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+@MappedSuperclass
+public class BaseSecurityConstraintsRef
+{
+    @Id
+    @GeneratedValue (strategy=GenerationType.AUTO)
+    @Column (name="CONSTRAINTS_REF_ID")
+    private int id;
+    @Version
+    @Column (name="JPA_VERSION")
+    private int jpaVersion;
+    @Basic
+    @Column (name="APPLY_ORDER")
+    private int applyOrder;
+    @Basic
+    @Column (name="NAME")
+    private String name;
+
+    /**
+     * Explicitly set inverse relationship when this object
+     * is added to a one-to-many collection. JPA does not
+     * manage bidirectional relationships.
+     * 
+     * @param inverse inverse relationship owning object.
+     */
+    public void setInverseRelationship(Object inverse)
+    {
+    }
+    
+    /**
+     * getApplyOrder
+     *
+     * @return apply order for constraints
+     */
+    public int getApplyOrder()
+    {
+        return applyOrder;
+    }
+
+    /**
+     * setApplyOrder
+     *
+     * @param order apply order for constraints
+     */
+    public void setApplyOrder(int order)
+    {
+        applyOrder = order;
+    }
+
+    /**
+     * getName
+     *
+     * @return name of referenced constraint
+     */
+    public String getName()
+    {
+        return name;
+    }
+
+    /**
+     * setName
+     *
+     * @param name name of referenced constraint
+     */
+    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 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;
+    }
+}

Added: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/jpa/FilteredFragmentList.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/jpa/FilteredFragmentList.java?rev=731466&view=auto
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/jpa/FilteredFragmentList.java (added)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/om/page/jpa/FilteredFragmentList.java Sun Jan  4 22:04:13 2009
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.om.page.jpa;
+
+import java.util.AbstractList;
+import java.util.List;
+import java.util.ListIterator;
+
+/**
+ * FragmentList
+ *
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+class FilteredFragmentList extends AbstractList
+{
+    private FragmentImpl fragment;
+    private List filteredList;
+
+    FilteredFragmentList(FragmentImpl fragment, List filteredList)
+    {
+        super();
+        this.fragment = fragment;
+        this.filteredList = filteredList;
+    }
+
+    /* (non-Javadoc)
+     * @see java.util.List#add(int,java.lang.Object)
+     */
+    public synchronized void add(int index, Object element)
+    {
+        // implement for modifiable AbstractList
+        filteredList.add(index, element);
+        // add object to persistent list
+        fragment.accessFragments().add(element);
+        // maintain page implementation reference
+        if ((fragment.getFragmentsPage() != null) && (element instanceof FragmentImpl))
+        {
+            ((FragmentImpl)element).setFragmentsPage(fragment.getFragmentsPage());
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see java.util.List#get(int)
+     */
+    public synchronized Object get(int index)
+    {
+        // implement for modifiable AbstractList
+        return filteredList.get(index);
+    }
+
+    /* (non-Javadoc)
+     * @see java.util.List#remove(int)
+     */
+    public synchronized Object remove(int index)
+    {
+        // implement for modifiable AbstractList
+        Object o = filteredList.remove(index);
+        // remove removed object from persistent list
+        if (o != null)
+        {
+            ListIterator iter = fragment.accessFragments().listIterator();
+            while (iter.hasNext())
+            {
+                if (iter.next() == o)
+                {
+                    iter.remove();
+                    break;
+                }
+            }
+        }
+        return o;
+    }
+
+    /* (non-Javadoc)
+     * @see java.util.List#set(int,java.lang.Object)
+     */
+    public synchronized Object set(int index, Object element)
+    {
+        // implement for modifiable AbstractList
+        Object o = filteredList.set(index, element);
+        // replace replaced object in persistent list
+        if (o != null)
+        {
+            ListIterator iter = fragment.accessFragments().listIterator();
+            while (iter.hasNext())
+            {
+                if (iter.next() == o)
+                {
+                    iter.set(element);
+                    break;
+                }
+            }
+        }
+        // maintain page implementation reference
+        if ((fragment.getFragmentsPage() != null) && (element instanceof FragmentImpl))
+        {
+            ((FragmentImpl)element).setFragmentsPage(fragment.getFragmentsPage());
+        }
+        return o;
+    }
+
+    /* (non-Javadoc)
+     * @see java.util.List#size()
+     */
+    public synchronized int size()
+    {
+        // implement for modifiable AbstractList
+        return filteredList.size();
+    }
+}



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