[jboss-svn-commits] JBoss Portal SVN: r5355 - trunk/core/src/main/org/jboss/portal/core/impl/model/portal

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Oct 7 19:16:43 EDT 2006


Author: julien at jboss.com
Date: 2006-10-07 19:16:31 -0400 (Sat, 07 Oct 2006)
New Revision: 5355

Modified:
   trunk/core/src/main/org/jboss/portal/core/impl/model/portal/AbstractPortalObjectContainer.java
   trunk/core/src/main/org/jboss/portal/core/impl/model/portal/ContainerContext.java
   trunk/core/src/main/org/jboss/portal/core/impl/model/portal/ObjectNode.java
   trunk/core/src/main/org/jboss/portal/core/impl/model/portal/PersistentPortalObjectContainer.java
   trunk/core/src/main/org/jboss/portal/core/impl/model/portal/TransientPortalObjectContainer.java
Log:
abstracted a bit more PersistentPortalObjectContainer to AbstractPortalObjectContainer

Modified: trunk/core/src/main/org/jboss/portal/core/impl/model/portal/AbstractPortalObjectContainer.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/impl/model/portal/AbstractPortalObjectContainer.java	2006-10-07 22:02:12 UTC (rev 5354)
+++ trunk/core/src/main/org/jboss/portal/core/impl/model/portal/AbstractPortalObjectContainer.java	2006-10-07 23:16:31 UTC (rev 5355)
@@ -22,12 +22,139 @@
 package org.jboss.portal.core.impl.model.portal;
 
 import org.jboss.portal.core.model.portal.PortalObjectContainer;
+import org.jboss.portal.core.model.portal.PortalObjectPermission;
+import org.jboss.portal.core.model.portal.PortalObject;
+import org.jboss.portal.core.model.portal.Context;
 import org.jboss.portal.jems.as.system.AbstractJBossService;
+import org.jboss.portal.security.PortalPermission;
+import org.jboss.portal.security.PortalPermissionCollection;
+import org.jboss.portal.security.PortalSecurityException;
+import org.jboss.portal.security.SecurityConstants;
+import org.jboss.portal.security.RoleSecurityBinding;
+import org.jboss.portal.security.spi.provider.PermissionFactory;
+import org.jboss.portal.security.spi.provider.SecurityConfigurationException;
+import org.jboss.portal.security.spi.provider.AuthorizationDomain;
+import org.jboss.portal.security.spi.provider.DomainConfigurator;
+import org.jboss.portal.security.spi.provider.PermissionRepository;
 
+import java.util.Collection;
+import java.util.Set;
+import java.util.Iterator;
+import java.util.HashSet;
+
 /**
  * @author <a href="mailto:julien at jboss.org">Julien Viet</a>
  * @version $Revision$
  */
-public abstract class AbstractPortalObjectContainer extends AbstractJBossService implements PortalObjectContainer
+public abstract class AbstractPortalObjectContainer extends AbstractJBossService
+   implements PortalObjectContainer, PermissionFactory, AuthorizationDomain, DomainConfigurator, PermissionRepository
 {
+
+   public PortalObject getObject(String id)
+   {
+      ObjectNode node = getObjectNode(id);
+
+      //
+      if (node != null)
+      {
+         return node.getObject();
+      }
+      else
+      {
+         return null;
+      }
+   }
+
+   public Context getContext()
+   {
+      return (Context)getObject("");
+   }
+
+   public String getType()
+   {
+      return PortalObjectPermission.PERMISSION_TYPE;
+   }
+
+   public DomainConfigurator getConfigurator()
+   {
+      return this;
+   }
+
+   public PermissionRepository getPermissionRepository()
+   {
+      return this;
+   }
+
+   public PermissionFactory getPermissionFactory()
+   {
+      return this;
+   }
+
+   public PortalPermission createPermissionContainer(PortalPermissionCollection collection) throws PortalSecurityException
+   {
+      return new PortalObjectPermission(collection);
+   }
+
+   public PortalPermission createPermission(String uri, String action) throws PortalSecurityException
+   {
+      return new PortalObjectPermission(uri,action);
+   }
+
+   public PortalPermission createPermission(String uri, Collection actions) throws PortalSecurityException
+   {
+      return new PortalObjectPermission(uri,actions);
+   }
+
+   protected abstract ObjectNode getObjectNode(String id);
+
+   public PortalPermission getPermission(String roleName, String uri) throws PortalSecurityException
+   {
+      ObjectNode objectNode = getObjectNode(uri);
+      if (objectNode != null)
+      {
+         for (Iterator i = objectNode.getBindings().iterator(); i.hasNext();)
+         {
+            RoleSecurityBinding binding = (RoleSecurityBinding)i.next();
+            String constraintRoleName = binding.getRole();
+            if (constraintRoleName.equals(roleName) || SecurityConstants.UNCHECKED_ROLE_NAME.equals(constraintRoleName))
+            {
+               return createPermission(uri, binding.getActions());
+            }
+         }
+      }
+      return null;
+   }
+
+   public void removeBindings(String uri) throws SecurityConfigurationException
+   {
+      ObjectNode on = getObjectNode(uri);
+      if(on == null)
+      {
+         throw new SecurityConfigurationException("The object should exist prior its security is configured : fixme");
+      }
+      on.setBindings(new HashSet());
+   }
+
+   public void setBindings(String uri, Set bindings) throws SecurityConfigurationException
+   {
+      ObjectNode on = getObjectNode(uri);
+      if(on  == null)
+      {
+         throw new SecurityConfigurationException("The object should exist prior its security is configured : fixme");
+      }
+      on.setBindings(bindings);
+   }
+
+   public Set getBindings(String uri)
+   {
+      ObjectNode on = getObjectNode(uri);
+      if (on != null)
+      {
+         return on.getBindings();
+      }
+      else
+      {
+         return null;
+      }
+   }
 }

Modified: trunk/core/src/main/org/jboss/portal/core/impl/model/portal/ContainerContext.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/impl/model/portal/ContainerContext.java	2006-10-07 22:02:12 UTC (rev 5354)
+++ trunk/core/src/main/org/jboss/portal/core/impl/model/portal/ContainerContext.java	2006-10-07 23:16:31 UTC (rev 5355)
@@ -21,7 +21,6 @@
 */
 package org.jboss.portal.core.impl.model.portal;
 
-import org.jboss.portal.api.node.event.PortalNodeEventListener;
 import org.jboss.portal.core.model.portal.PortalObjectContainer;
 
 /**
@@ -34,14 +33,6 @@
     */
    PortalObjectContainer getContainer();
 
-//   /**
-//    */
-//   void beforeChildRemoved(ObjectNode node);
-//
-//   /**
-//    */
-//   void afterChildRemoved(ObjectNode node);
-
    /**
     */
    void destroyChild(ObjectNode node);
@@ -50,11 +41,7 @@
     */
    void createChild(ObjectNode node);
 
-//   /**
-//    */
-//   void beforeChildAdded(ObjectNode node);
-//
-//   /**
-//    */
-//   void afterChildAdded(ObjectNode node);
+   /**
+    */
+   void updated(ObjectNode node);
 }

Modified: trunk/core/src/main/org/jboss/portal/core/impl/model/portal/ObjectNode.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/impl/model/portal/ObjectNode.java	2006-10-07 22:02:12 UTC (rev 5354)
+++ trunk/core/src/main/org/jboss/portal/core/impl/model/portal/ObjectNode.java	2006-10-07 23:16:31 UTC (rev 5355)
@@ -24,12 +24,15 @@
 import org.jboss.portal.core.model.portal.NoSuchPortalObjectException;
 import org.jboss.portal.core.model.portal.DuplicatePortalObjectException;
 import org.jboss.portal.jems.hibernate.ContextObject;
+import org.jboss.portal.security.RoleSecurityBinding;
 import org.jboss.logging.Logger;
 
 import java.util.Map;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Set;
 
 /**
  * @author <a href="mailto:julien at jboss.org">Julien Viet</a>
@@ -247,4 +250,47 @@
    {
       this.securityConstraints = securityConstraints;
    }
+
+   public void setBindings(Set bindings)
+   {
+      // Clear existing constraints
+      securityConstraints.clear();
+      for (Iterator i = securityConstraints.values().iterator(); i.hasNext();)
+      {
+         ObjectNodeSecurityConstraint onsc =  (ObjectNodeSecurityConstraint)i.next();
+         i.remove();
+         onsc.setObjectNode(null);
+      }
+
+      // Replace with new ones
+      for (Iterator i = bindings.iterator(); i.hasNext();)
+      {
+         RoleSecurityBinding sc = (RoleSecurityBinding)i.next();
+
+         // Optmize a bit
+         if (sc.getActions().size() > 0)
+         {
+            ObjectNodeSecurityConstraint onsc =  new ObjectNodeSecurityConstraint(sc.getActions(),sc.getRole());
+
+            //
+            onsc.setObjectNode(this);
+            securityConstraints.put(onsc.getRole(), onsc);
+         }
+      }
+
+      //
+      context.updated(this);
+   }
+
+   public Set getBindings()
+   {
+      Set bindings = new HashSet();
+      for (Iterator i = securityConstraints.values().iterator(); i.hasNext();)
+      {
+         ObjectNodeSecurityConstraint onsc = (ObjectNodeSecurityConstraint)i.next();
+         RoleSecurityBinding sc = new RoleSecurityBinding(onsc.getActions(), onsc.getRole());
+         bindings.add(sc);
+      }
+      return bindings;
+   }
 }

Modified: trunk/core/src/main/org/jboss/portal/core/impl/model/portal/PersistentPortalObjectContainer.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/impl/model/portal/PersistentPortalObjectContainer.java	2006-10-07 22:02:12 UTC (rev 5354)
+++ trunk/core/src/main/org/jboss/portal/core/impl/model/portal/PersistentPortalObjectContainer.java	2006-10-07 23:16:31 UTC (rev 5355)
@@ -25,29 +25,13 @@
 import org.hibernate.SessionFactory;
 import org.hibernate.Query;
 import org.jboss.logging.Logger;
-import org.jboss.portal.core.model.portal.Context;
-import org.jboss.portal.core.model.portal.PortalObject;
 import org.jboss.portal.core.model.portal.PortalObjectContainer;
-import org.jboss.portal.core.model.portal.PortalObjectPermission;
 import org.jboss.portal.security.impl.JBossAuthorizationDomainRegistry;
-import org.jboss.portal.security.PortalPermission;
-import org.jboss.portal.security.PortalPermissionCollection;
-import org.jboss.portal.security.PortalSecurityException;
-import org.jboss.portal.security.SecurityConstants;
-import org.jboss.portal.security.RoleSecurityBinding;
 import org.jboss.portal.security.spi.auth.PortalAuthorizationManagerFactory;
 import org.jboss.portal.security.spi.provider.AuthorizationDomain;
-import org.jboss.portal.security.spi.provider.SecurityConfigurationException;
-import org.jboss.portal.security.spi.provider.DomainConfigurator;
-import org.jboss.portal.security.spi.provider.PermissionFactory;
-import org.jboss.portal.security.spi.provider.PermissionRepository;
 import org.jboss.portal.jems.hibernate.ObjectContextualizer;
 
 import javax.naming.InitialContext;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.HashSet;
 
 /**
  *
@@ -55,7 +39,6 @@
  * @version $Revision$
  */
 public class PersistentPortalObjectContainer extends AbstractPortalObjectContainer
-   implements AuthorizationDomain, DomainConfigurator, PermissionRepository, PermissionFactory
 {
 
    /** The query for lookup. */
@@ -110,6 +93,12 @@
             session.save(node.getObject());
             session.flush();
          }
+
+         public void updated(ObjectNode node)
+         {
+            Session session = sessionFactory.getCurrentSession();
+            session.flush();
+         }
       };
 
       //
@@ -197,25 +186,6 @@
       }
    }
 
-   public PortalObject getObject(String id)
-   {
-      Session session = sessionFactory.getCurrentSession();
-      ObjectNode node = lookup(session, id);
-      if (node != null)
-      {
-         return node.getObject();
-      }
-      else
-      {
-         return null;
-      }
-   }
-
-   public Context getContext()
-   {
-      return (Context)getObject("");
-   }
-
    /**
     * todo : use AOP for tx demarcation.
     */
@@ -225,7 +195,7 @@
        Session session = sessionFactory.getCurrentSession();
 
        // Create root context if it does not exist
-       ObjectNode root = lookup(session, "");
+       ObjectNode root = getObjectNode(session, "");
        if (root == null)
        {
           // Bootstrap the root node
@@ -252,145 +222,13 @@
    //            AuthorizationDomain interface methods
    //*******************************************************************
 
-   public String getType()
+   protected ObjectNode getObjectNode(String uri)
    {
-      return PortalObjectPermission.PERMISSION_TYPE;
+      return getObjectNode(sessionFactory.getCurrentSession(), uri);
    }
 
-
-   public DomainConfigurator getConfigurator()
+   private ObjectNode getObjectNode(Session session, String path)
    {
-      return this;
-   }
-
-
-   public PermissionRepository getPermissionRepository()
-   {
-      return this;
-   }
-
-
-   public PermissionFactory getPermissionFactory()
-   {
-      return this;
-   }
-
-   public Set getBindings(String uri)
-   {
-      Set constraints = null;
-      Set onscs = getConstraints(uri, sessionFactory.getCurrentSession());
-      if (onscs != null)
-      {
-         constraints = new HashSet();
-         for (Iterator i = onscs.iterator(); i.hasNext();)
-         {
-            ObjectNodeSecurityConstraint onsc = (ObjectNodeSecurityConstraint)i.next();
-            RoleSecurityBinding sc = new RoleSecurityBinding(onsc.getActions(), onsc.getRole());
-            constraints.add(sc);
-         }
-      }
-      return constraints;
-   }
-
-
-   public void setBindings(String uri, Set bindings) throws SecurityConfigurationException
-   {
-      setConstraints(uri,bindings,sessionFactory.getCurrentSession());
-   }
-
-   public void removeBindings(String uri) throws SecurityConfigurationException
-   {
-      removeConstraints(uri,sessionFactory.getCurrentSession());
-   }
-
-   public PortalPermission getPermission(String roleName, String uri) throws PortalSecurityException
-   {
-      if(sessionFactory == null)
-      {
-         throw new IllegalStateException("sessionFactory is null");
-      }
-      Set set = getConstraints(uri,sessionFactory.getCurrentSession());
-      if (set != null && !set.isEmpty())
-      {
-         for (Iterator i = set.iterator(); i.hasNext();)
-         {
-            ObjectNodeSecurityConstraint sc = (ObjectNodeSecurityConstraint)i.next();
-            String constraintRoleName = sc.getRole();
-            if (constraintRoleName.equals(roleName) || SecurityConstants.UNCHECKED_ROLE_NAME.equals(constraintRoleName))
-            {
-               return createPermission(uri, sc.getActions());
-            }
-         }
-      }
-      return null;
-   }
-
-   public PortalPermission createPermissionContainer(PortalPermissionCollection collection) throws PortalSecurityException
-   {
-      return new PortalObjectPermission(collection);
-   }
-
-   public PortalPermission createPermission(String uri, String action) throws PortalSecurityException
-   {
-      return new PortalObjectPermission(uri,action);
-   }
-
-   public PortalPermission createPermission(String uri, Collection actions) throws PortalSecurityException
-   {
-      return new PortalObjectPermission(uri,actions);
-   }
-
-   private void removeConstraints(String uri, Session session) throws SecurityConfigurationException
-   {
-      ObjectNode on = lookup(session, uri);
-      if(on != null)
-      {
-         on.getSecurityConstraints().clear();
-         session.flush();
-      }
-      else
-      {
-         throw new SecurityConfigurationException("The object should exist prior its security is configured : fixme");
-      }
-   }
-
-   private void setConstraints(String uri, Set constraints, Session session) throws SecurityConfigurationException
-   {
-      ObjectNode on = lookup(session, uri);
-      if(on  == null)
-      {
-         throw new SecurityConfigurationException("The object should exist prior its security is configured : fixme");
-      }
-
-      // Clear existing constraints
-      on.getSecurityConstraints().clear();
-      for (Iterator i = on.getSecurityConstraints().values().iterator(); i.hasNext();)
-      {
-         ObjectNodeSecurityConstraint onsc =  (ObjectNodeSecurityConstraint)i.next();
-         i.remove();
-         onsc.setObjectNode(null);
-      }
-
-      // Replace with new ones
-      for (Iterator i = constraints.iterator(); i.hasNext();)
-      {
-         RoleSecurityBinding sc = (RoleSecurityBinding)i.next();
-
-         // Optmize a bit
-         if (sc.getActions().size() > 0)
-         {
-            ObjectNodeSecurityConstraint onsc =  new ObjectNodeSecurityConstraint(sc.getActions(),sc.getRole());
-
-            //
-            onsc.setObjectNode(on);
-            on.getSecurityConstraints().put(onsc.getRole(), onsc);
-         }
-      }
-      session.flush();
-   }
-
-   private ObjectNode lookup(Session session, String path)
-   {
       String s = LOOKUP_QUERY;
       if (path.length() == 0)
       {
@@ -404,15 +242,4 @@
       Object objectNode = query.uniqueResult();
       return (ObjectNode)objectNode;
    }
-
-   private Set getConstraints(String uri, Session session)
-   {
-      Set constraints = null;
-      ObjectNode on = lookup(session, uri);
-      if (on != null)
-      {
-         constraints = new HashSet(on.getSecurityConstraints().values());
-      }
-      return constraints;
-   }
 }

Modified: trunk/core/src/main/org/jboss/portal/core/impl/model/portal/TransientPortalObjectContainer.java
===================================================================
--- trunk/core/src/main/org/jboss/portal/core/impl/model/portal/TransientPortalObjectContainer.java	2006-10-07 22:02:12 UTC (rev 5354)
+++ trunk/core/src/main/org/jboss/portal/core/impl/model/portal/TransientPortalObjectContainer.java	2006-10-07 23:16:31 UTC (rev 5355)
@@ -58,6 +58,9 @@
          public void createChild(ObjectNode node)
          {
          }
+         public void updated(ObjectNode node)
+         {
+         }
       };
    }
 
@@ -69,9 +72,16 @@
       ctx.setObjectNode(root);
    }
 
-   public PortalObject getObject(String id)
+   /**
+    * @see PortalObjectContainer#getAuthorizationDomain()
+    */
+   public AuthorizationDomain getAuthorizationDomain()
    {
-      //
+      throw new IllegalStateException("Unimplemented");
+   }
+
+   protected ObjectNode getObjectNode(String id)
+   {
       ObjectNode node = root;
       int prev = 0;
       int index = id.indexOf('.');
@@ -92,26 +102,6 @@
       }
 
       //
-      if (node != null)
-      {
-         return node.getObject();
-      }
-      else
-      {
-         return null;
-      }
+      return node;
    }
-
-   public Context getContext()
-   {
-      return (Context)root.getObject();
-   }
-
-   /**
-    * @see PortalObjectContainer#getAuthorizationDomain()
-    */
-   public AuthorizationDomain getAuthorizationDomain()
-   {
-      throw new IllegalStateException("Unimplemented");
-   }
 }




More information about the jboss-svn-commits mailing list