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]