ate         2005/03/26 14:05:14

  Modified:    portal/src/java/org/apache/jetspeed/tools/pamanager
                        PortletApplicationManager.java
  Log:
  Optionally create roles defined in the web descriptor on registration of a 
portlet application.
  This is configurable in the springframework definition. Just set properties 
roleManager and autoCreateRoles.
  See http://issues.apache.org/jira/browse/JS2-211
  
  Revision  Changes    Path
  1.20      +39 -3     
jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/tools/pamanager/PortletApplicationManager.java
  
  Index: PortletApplicationManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/portal/src/java/org/apache/jetspeed/tools/pamanager/PortletApplicationManager.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- PortletApplicationManager.java    23 Mar 2005 22:54:30 -0000      1.19
  +++ PortletApplicationManager.java    26 Mar 2005 22:05:13 -0000      1.20
  @@ -27,9 +27,11 @@
   import org.apache.jetspeed.om.common.portlet.MutablePortletApplication;
   import org.apache.jetspeed.om.common.servlet.MutableWebApplication;
   import org.apache.jetspeed.search.SearchEngine;
  +import org.apache.jetspeed.security.RoleManager;
   import org.apache.jetspeed.util.FileSystemHelper;
   import org.apache.jetspeed.util.descriptor.PortletApplicationWar;
   
  +import org.apache.pluto.om.common.SecurityRole;
   import org.apache.pluto.om.entity.PortletEntity;
   import org.apache.pluto.om.portlet.PortletDefinition;
   
  @@ -52,7 +54,9 @@
       protected PortletFactory        portletFactory;
       protected PortletRegistry       registry;
       protected PortletWindowAccessor windowAccess;
  -    protected SearchEngine searchEngine;
  +    protected SearchEngine          searchEngine;
  +    protected RoleManager           roleManager;
  +    protected boolean               autoCreateRoles;
   
       /**
         * Creates a new PortletApplicationManager object.
  @@ -65,6 +69,16 @@
                this.entityAccess           = entityAccess;
                this.windowAccess           = windowAccess;
        }
  +    
  +    public void setRoleManager(RoleManager roleManager)
  +    {
  +        this.roleManager = roleManager;
  +    }
  +    
  +    public void setAutoCreateRoles(boolean autoCreateRoles)
  +    {
  +        this.autoCreateRoles = autoCreateRoles;
  +    }
   
        public void setSearchEngine(SearchEngine searchEngine)
        {
  @@ -236,6 +250,28 @@
                                searchEngine.add(pa.getPortletDefinitions());
                                log.info("Registered the portlet application in 
the search engine... " + paName);
                        }
  +            
  +            if ( autoCreateRoles && roleManager != null && 
pa.getWebApplicationDefinition().getSecurityRoles() != null )
  +            {
  +                try
  +                {
  +                    Iterator rolesIter = 
pa.getWebApplicationDefinition().getSecurityRoles().iterator();
  +                    SecurityRole sr;
  +                    while ( rolesIter.hasNext() )
  +                    {
  +                        sr = (SecurityRole)rolesIter.next();
  +                        if ( !roleManager.roleExists(sr.getRoleName()) )
  +                        {
  +                            roleManager.addRole(sr.getRoleName());
  +                            log.info("AutoCreated role: "+sr.getRoleName()+" 
from portlet application "+paName+" its web definition");
  +                        }
  +                    }
  +                }
  +                catch (SecurityException sex)
  +                {
  +                    log.warn("Failed to autoCreate roles for portlet 
application " + paName+": "+sex.getMessage(), sex);
  +                }
  +            }
   
                        return pa;
                }
  @@ -248,7 +284,7 @@
                        {
                                try
                                {
  -                                     registry.removeApplication(pa);
  +                                     unregisterPortletApplication(pa, local);
                                }
                                catch (Exception re)
                                {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to