taylor 2005/01/12 22:13:17 Modified: applications/security/src/webapp/WEB-INF/security/users user-chooser.vm applications/security/src/java/org/apache/jetspeed/portlets/security/sso SSODetails.java applications/security/src/webapp/WEB-INF/security/sso sites-details.vm applications/security/src/java/org/apache/jetspeed/portlets/security/users UserChooserPortlet.java applications/security/src/webapp/WEB-INF portlet.xml jetspeed-portlet.xml Added: applications/security/src/webapp/WEB-INF/security/users group-chooser.vm role-chooser.vm applications/security/src/webapp/images group-chooser.gif applications/security/src/java/org/apache/jetspeed/portlets/security/users RoleChooserPortlet.java GroupChooserPortlet.java Log: continued work on http://issues.apache.org/jira/browse/JS2-178 cleaned up user and group popups Revision Changes Path 1.2 +2 -18 jakarta-jetspeed-2/applications/security/src/webapp/WEB-INF/security/users/user-chooser.vm Index: user-chooser.vm =================================================================== RCS file: /home/cvs/jakarta-jetspeed-2/applications/security/src/webapp/WEB-INF/security/users/user-chooser.vm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- user-chooser.vm 5 Jan 2005 04:24:49 -0000 1.1 +++ user-chooser.vm 13 Jan 2005 06:13:16 -0000 1.2 @@ -27,7 +27,9 @@ {
var openerForm = opener.document.forms['securityform']; var openerEl = openerForm.elements['portal.principal']; + var openerType = openerForm.elements['principal.type']; openerEl.value = value; + openerType.value = 'user'; window.close(); } function rowHover(row) @@ -47,7 +49,6 @@ <table cellpadding=0 cellspacing=1 border=0 width='100%' > <tr> - <td width='12' class="jetdbHeadNoLink"></td> #foreach ($column in $title) #set ($columnLink = $renderResponse.createRenderURL()) $columnLink.setParameter("js_dbcolumn",$column) @@ -56,30 +57,13 @@ $column </td> #end - <td width='24' class="jetdbHeadNoLink"> </td> - <td class=""></td> </tr> #foreach ( $user in $table ) <tr> #set ($rowstyle = "jetdbOdd") - <td class="$rowstyle" nowrap width='12'> - - </td> <td class="$rowstyle" nowrap width="25%" onclick="select('$user');" onmouseover="rowHover(this)"> <div align="center">$user</div> </td> - <td class=""> </td> </tr> #end - <tr> - <td width='12' class="jetdbHeadNoLink"></td> - #foreach ($column in $title) - #set ($columnLink = $renderResponse.createRenderURL()) - $columnLink.setParameter("js_dbcolumn",$column) - <td align='center' class="jetdbHeadNoLink" width="40%" nowrap> - </td> - #end - <td width='24' class="jetdbHeadNoLink"> </td> - <td class=""></td> - </tr> </table> 1.1 jakarta-jetspeed-2/applications/security/src/webapp/WEB-INF/security/users/group-chooser.vm Index: group-chooser.vm =================================================================== #* Copyright 2004 The Apache Software Foundation Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. *# #** @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a> @version $Id: sites-details.vm,v 1.2 2005/01/04 23:16:54 taylor Exp $ *# <script language="JavaScript" type="text/javascript"> <!-- function select(value) { var openerForm = opener.document.forms['securityform']; var openerEl = openerForm.elements['portal.principal']; var openerType = openerForm.elements['principal.type']; openerEl.value = value; openerType.value = 'group'; window.close(); } function rowHover(row) { row.oldClassName = row.className; row.className = 'jetdbLight'; row.onmouseout = function() { this.className = this.oldClassName; } } //--> </script> #set ($MESSAGES = $portletConfig.getResourceBundle($renderRequest.Locale)) <table cellpadding=0 cellspacing=1 border=0 width='100%' > <tr> #foreach ($column in $title) #set ($columnLink = $renderResponse.createRenderURL()) $columnLink.setParameter("js_dbcolumn",$column) ## <td align='center' class="jetdbHeadNoLink" width="40%" nowrap onClick="window.location.href='$columnLink'"> <td align='center' class="jetdbHeadNoLink" width="40%" nowrap> $column </td> #end </tr> #foreach ( $group in $table ) <tr> #set ($rowstyle = "jetdbOdd") <td class="$rowstyle" nowrap width="25%" onclick="select('$group');" onmouseover="rowHover(this)"> <div align="center">$group</div> </td> </tr> #end </table> 1.1 jakarta-jetspeed-2/applications/security/src/webapp/WEB-INF/security/users/role-chooser.vm Index: role-chooser.vm =================================================================== #* Copyright 2004 The Apache Software Foundation Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. *# #** @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a> @version $Id: sites-details.vm,v 1.2 2005/01/04 23:16:54 taylor Exp $ *# <script language="JavaScript" type="text/javascript"> <!-- function select(value) { var openerForm = opener.document.forms['securityform']; var openerEl = openerForm.elements['portal.principal']; var openerType = openerForm.elements['principal.type']; openerEl.value = value; openerType.value = 'role'; window.close(); } function rowHover(row) { row.oldClassName = row.className; row.className = 'jetdbLight'; row.onmouseout = function() { this.className = this.oldClassName; } } //--> </script> #set ($MESSAGES = $portletConfig.getResourceBundle($renderRequest.Locale)) <table cellpadding=0 cellspacing=1 border=0 width='100%' > <tr> #foreach ($column in $title) #set ($columnLink = $renderResponse.createRenderURL()) $columnLink.setParameter("js_dbcolumn",$column) ## <td align='center' class="jetdbHeadNoLink" width="40%" nowrap onClick="window.location.href='$columnLink'"> <td align='center' class="jetdbHeadNoLink" width="40%" nowrap> $column </td> #end </tr> #foreach ( $role in $table ) <tr> #set ($rowstyle = "jetdbOdd") <td class="$rowstyle" nowrap width="25%" onclick="select('$role');" onmouseover="rowHover(this)"> <div align="center">$role</div> </td> </tr> #end </table> 1.1 jakarta-jetspeed-2/applications/security/src/webapp/images/group-chooser.gif <<Binary file>> 1.4 +34 -47 jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/sso/SSODetails.java Index: SSODetails.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/sso/SSODetails.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- SSODetails.java 5 Jan 2005 04:24:49 -0000 1.3 +++ SSODetails.java 13 Jan 2005 06:13:16 -0000 1.4 @@ -28,18 +28,18 @@ import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; import javax.security.auth.Subject; +import javax.servlet.http.HttpServletRequest; -import org.apache.jetspeed.components.portletentity.PortletEntityAccessComponent; -import org.apache.jetspeed.components.portletregistry.PortletRegistry; +import org.apache.jetspeed.PortalReservedParameters; import org.apache.jetspeed.portlets.security.SecurityResources; +import org.apache.jetspeed.request.RequestContext; +import org.apache.jetspeed.security.GroupManager; import org.apache.jetspeed.security.SecurityException; import org.apache.jetspeed.security.User; import org.apache.jetspeed.security.UserManager; import org.apache.jetspeed.sso.SSOException; import org.apache.jetspeed.sso.SSOProvider; import org.apache.jetspeed.sso.SSOSite; -import org.apache.pluto.om.entity.PortletEntity; -import org.apache.pluto.om.portlet.PortletDefinition; import org.apache.portals.gems.browser.BrowserIterator; import org.apache.portals.gems.browser.DatabaseBrowserIterator; import org.apache.portals.gems.browser.BrowserPortlet; @@ -56,13 +56,8 @@ { private SSOProvider sso; private UserManager userManager; - private PortletEntityAccessComponent entityAccess; - private PortletRegistry registry; - private PortletEntity chooserEntity = null; - - private static final String USER_CHOOSER_ENTITY_KEY = "_js2-security-714"; - private static final String PORTLET_NAME = "security::UserChooser"; - + private GroupManager groupManager; + public void init(PortletConfig config) throws PortletException { @@ -77,40 +72,11 @@ { throw new PortletException("Failed to find the User Manager on portlet initialization"); } - - registry = (PortletRegistry) - getPortletContext().getAttribute(SecurityResources.CPS_REGISTRY_COMPONENT); - if (null == registry) - { - throw new PortletException("Failed to find the Registry on portlet initialization"); - } - entityAccess = (PortletEntityAccessComponent) - getPortletContext().getAttribute(SecurityResources.CPS_ENTITY_ACCESS_COMPONENT); - if (null == entityAccess) - { - throw new PortletException("Failed to find the Entity Accessor on portlet initialization"); - } - - PortletDefinition portletDef = registry.getPortletDefinitionByUniqueName(PORTLET_NAME); - if (null == portletDef) + groupManager = (GroupManager) getPortletContext().getAttribute(SecurityResources.CPS_GROUP_MANAGER_COMPONENT); + if (null == userManager) { - throw new PortletException("Could not find portlet definition in registry for " + PORTLET_NAME); - } - - PortletEntity entity = entityAccess.getPortletEntity(USER_CHOOSER_ENTITY_KEY); - if (entity == null) - { - entity = entityAccess.newPortletEntityInstance(portletDef, USER_CHOOSER_ENTITY_KEY); - try - { - entityAccess.storePortletEntity(entity); - } - catch (Exception e) - { - throw new PortletException("Could not create entity for " + PORTLET_NAME); - } - } - chooserEntity = entity; + throw new PortletException("Failed to find the User Manager on portlet initialization"); + } } @@ -165,11 +131,29 @@ if (selectedSite != null) { context.put("currentSite", selectedSite); - } - context.put("chooser", chooserEntity); + } + + // get relative link, TODO: encapsulate Jetspeed links access into component + String userChooser = getAbsoluteUrl(request, "/Administrative/choosers/users.psml"); + String groupChooser = getAbsoluteUrl(request, "/Administrative/choosers/groups.psml"); + + context.put("userChooser", userChooser); + context.put("groupChooser", groupChooser); + super.doView(request, response); } + public String getAbsoluteUrl(RenderRequest renderRequest, String relativePath) + { + RequestContext requestContext = (RequestContext) renderRequest.getAttribute(PortalReservedParameters.REQUEST_CONTEXT_ATTRIBUTE); + HttpServletRequest request = requestContext.getRequest(); + StringBuffer path = new StringBuffer(); + return path.append(request.getScheme()).append("://").append(request.getServerName()).append(":").append( + request.getServerPort()).append(request.getContextPath()).append(request.getServletPath()).append( + relativePath).toString(); + } + + public void processAction(ActionRequest request, ActionResponse response) throws PortletException, IOException { @@ -189,6 +173,9 @@ } else if (save != null) { + // Roger: here is the principal type + String principalType = request.getParameter("principal.type"); + System.out.println("principal.type = " + principalType); String portalPrincipal = request.getParameter("portal.principal"); String remotePrincipal = request.getParameter("remote.principal"); String remoteCredential = request.getParameter("remote.credential"); 1.5 +11 -6 jakarta-jetspeed-2/applications/security/src/webapp/WEB-INF/security/sso/sites-details.vm Index: sites-details.vm =================================================================== RCS file: /home/cvs/jakarta-jetspeed-2/applications/security/src/webapp/WEB-INF/security/sso/sites-details.vm,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- sites-details.vm 11 Jan 2005 09:30:52 -0000 1.4 +++ sites-details.vm 13 Jan 2005 06:13:16 -0000 1.5 @@ -21,13 +21,13 @@ *# -#set ($pipeline = $renderResponse.createRenderURL()) -#set ($pipeline = "$pipeline?pipeline=portlet-pipeline&entity=$chooser.Id") +## set ($pipeline = $renderResponse.createRenderURL()) +## set ($pipeline = "$pipeline?pipeline=portlet-pipeline&entity=$chooser.Id") <script> -function openWindow(element) +function openWindow(pipeline) { - var vWinUsers = window.open('$pipeline', 'UserPicker', 'status=no,resizable=yes,top=100,left=200,width=100,height=250,scrollbars=yes'); + var vWinUsers = window.open(pipeline, 'UserPicker', 'status=no,resizable=yes,top=100,left=200,width=100,height=250,scrollbars=yes'); vWinUsers.opener = self; vWinUsers.focus(); } @@ -91,15 +91,20 @@ </table> <br/> <form name='securityform' action="$renderResponse.createActionURL()" method="post"> +<input type='hidden' name='principal.type' value='user'/> <table> <tr colspan="2" align="right"> <td nowrap class="portlet-section-alternate" align="right">Portal Principal: </td> <td class="portlet-section-body" align="left"> <input type="text" name="portal.principal" size="30" value="$!currentP" class="portlet-form-field-label"> - <a href="javascript:openWindow('portal.principal');"> + <a href="javascript:openWindow('$userChooser');"> <img title="Select a user" name="assigneeImage" src="/security/images/user-chooser.gif" hspace=0 height=16 width=16 border=0 align=absmiddle></a> + <a href="javascript:openWindow('$groupChooser');"> + <img title="Select a user" + name="assigneeImage" + src="/security/images/group-chooser.gif" hspace=0 height=16 width=16 border=0 align=absmiddle></a> </td> </td> </tr> 1.2 +2 -1 jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/users/UserChooserPortlet.java Index: UserChooserPortlet.java =================================================================== RCS file: /home/cvs/jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/users/UserChooserPortlet.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- UserChooserPortlet.java 5 Jan 2005 04:24:49 -0000 1.1 +++ UserChooserPortlet.java 13 Jan 2005 06:13:16 -0000 1.2 @@ -81,6 +81,7 @@ list, resultSetTitleList, resultSetTypeList, windowSize); setBrowserIterator(request, iterator); + iterator.sort("User"); } catch (Exception e) { 1.1 jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/users/RoleChooserPortlet.java Index: RoleChooserPortlet.java =================================================================== /* Copyright 2004 Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jetspeed.portlets.security.users; import java.security.Principal; import java.sql.Types; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.portlet.PortletConfig; import javax.portlet.PortletException; import javax.portlet.RenderRequest; import org.apache.jetspeed.portlets.security.SecurityResources; import org.apache.jetspeed.security.Role; import org.apache.jetspeed.security.RoleManager; import org.apache.portals.gems.browser.BrowserIterator; import org.apache.portals.gems.browser.DatabaseBrowserIterator; import org.apache.portals.gems.browser.BrowserPortlet; /** * RoleChooserPortlet * * @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a> * @version $Id: RoleChooserPortlet.java,v 1.1 2005/01/13 06:13:16 taylor Exp $ */ public class RoleChooserPortlet extends BrowserPortlet { private RoleManager roleManager; public void init(PortletConfig config) throws PortletException { super.init(config); roleManager = (RoleManager) getPortletContext().getAttribute(SecurityResources.CPS_GROUP_MANAGER_COMPONENT); if (null == roleManager) { throw new PortletException("Failed to find the User Manager on portlet initialization"); } } public void getRows(RenderRequest request, String sql, int windowSize) throws Exception { List resultSetTitleList = new ArrayList(); List resultSetTypeList = new ArrayList(); try { Iterator roles = roleManager.getRoles(""); resultSetTypeList.add(String.valueOf(Types.VARCHAR)); resultSetTitleList.add("Role"); // TODO: need to try to normalize List/Collection/Iterators List list = new ArrayList(); while (roles.hasNext()) { Role role = (Role)roles.next(); Principal principal = role.getPrincipal(); list.add(principal.getName()); } BrowserIterator iterator = new DatabaseBrowserIterator( list, resultSetTitleList, resultSetTypeList, windowSize); setBrowserIterator(request, iterator); iterator.sort("Role"); } catch (Exception e) { //log.error("Exception in CMSBrowserAction.getRows: ", e); e.printStackTrace(); throw e; } } } 1.1 jakarta-jetspeed-2/applications/security/src/java/org/apache/jetspeed/portlets/security/users/GroupChooserPortlet.java Index: GroupChooserPortlet.java =================================================================== /* Copyright 2004 Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jetspeed.portlets.security.users; import java.security.Principal; import java.sql.Types; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.portlet.PortletConfig; import javax.portlet.PortletException; import javax.portlet.RenderRequest; import org.apache.jetspeed.portlets.security.SecurityResources; import org.apache.jetspeed.security.Group; import org.apache.jetspeed.security.GroupManager; import org.apache.portals.gems.browser.BrowserIterator; import org.apache.portals.gems.browser.DatabaseBrowserIterator; import org.apache.portals.gems.browser.BrowserPortlet; /** * GroupChooserPortlet * * @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a> * @version $Id: GroupChooserPortlet.java,v 1.1 2005/01/13 06:13:16 taylor Exp $ */ public class GroupChooserPortlet extends BrowserPortlet { private GroupManager groupManager; public void init(PortletConfig config) throws PortletException { super.init(config); groupManager = (GroupManager) getPortletContext().getAttribute(SecurityResources.CPS_GROUP_MANAGER_COMPONENT); if (null == groupManager) { throw new PortletException("Failed to find the User Manager on portlet initialization"); } } public void getRows(RenderRequest request, String sql, int windowSize) throws Exception { List resultSetTitleList = new ArrayList(); List resultSetTypeList = new ArrayList(); try { Iterator groups = groupManager.getGroups(""); resultSetTypeList.add(String.valueOf(Types.VARCHAR)); resultSetTitleList.add("Group"); // TODO: need to try to normalize List/Collection/Iterators List list = new ArrayList(); while (groups.hasNext()) { Group group = (Group)groups.next(); Principal principal = group.getPrincipal(); list.add(principal.getName()); } BrowserIterator iterator = new DatabaseBrowserIterator( list, resultSetTitleList, resultSetTypeList, windowSize); setBrowserIterator(request, iterator); iterator.sort("Group"); } catch (Exception e) { //log.error("Exception in CMSBrowserAction.getRows: ", e); e.printStackTrace(); throw e; } } } 1.11 +70 -0 jakarta-jetspeed-2/applications/security/src/webapp/WEB-INF/portlet.xml Index: portlet.xml =================================================================== RCS file: /home/cvs/jakarta-jetspeed-2/applications/security/src/webapp/WEB-INF/portlet.xml,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- portlet.xml 5 Jan 2005 04:24:49 -0000 1.10 +++ portlet.xml 13 Jan 2005 06:13:17 -0000 1.11 @@ -235,10 +235,80 @@ </supports> <supported-locale>en</supported-locale> <resource-bundle>org.apache.jetspeed.portlets.security.resources.SecurityResources</resource-bundle> + <portlet-preferences> + <preference> + <name>WindowSize</name> + <value>1000</value> + </preference> + </portlet-preferences> <portlet-info> <title>User Select</title> <short-title>Users</short-title> <keywords>admin,security,users</keywords> + </portlet-info> +</portlet> + +<portlet id="RoleChooser"> + <init-param> + <description>This parameter sets the template used in view mode.</description> + <name>ViewPage</name> + <value>/WEB-INF/security/users/role-chooser.vm</value> + </init-param> + <portlet-name>RoleChooser</portlet-name> + <display-name>Roles</display-name> + <description>Role Chooser Portlet</description> + <portlet-class>org.apache.jetspeed.portlets.security.users.RoleChooserPortlet</portlet-class> + <expiration-cache>-1</expiration-cache> + <supports> + <mime-type>text/html</mime-type> + <portlet-mode>EDIT</portlet-mode> + <portlet-mode>VIEW</portlet-mode> + <portlet-mode>HELP</portlet-mode> + </supports> + <supported-locale>en</supported-locale> + <resource-bundle>org.apache.jetspeed.portlets.security.resources.SecurityResources</resource-bundle> + <portlet-preferences> + <preference> + <name>WindowSize</name> + <value>1000</value> + </preference> + </portlet-preferences> + <portlet-info> + <title>Role Select</title> + <short-title>Roles</short-title> + <keywords>admin,security,roles</keywords> + </portlet-info> +</portlet> + +<portlet id="GroupChooser"> + <init-param> + <description>This parameter sets the template used in view mode.</description> + <name>ViewPage</name> + <value>/WEB-INF/security/users/group-chooser.vm</value> + </init-param> + <portlet-name>GroupChooser</portlet-name> + <display-name>Groups</display-name> + <description>Group Chooser Portlet</description> + <portlet-class>org.apache.jetspeed.portlets.security.users.GroupChooserPortlet</portlet-class> + <expiration-cache>-1</expiration-cache> + <supports> + <mime-type>text/html</mime-type> + <portlet-mode>EDIT</portlet-mode> + <portlet-mode>VIEW</portlet-mode> + <portlet-mode>HELP</portlet-mode> + </supports> + <supported-locale>en</supported-locale> + <resource-bundle>org.apache.jetspeed.portlets.security.resources.SecurityResources</resource-bundle> + <portlet-preferences> + <preference> + <name>WindowSize</name> + <value>1000</value> + </preference> + </portlet-preferences> + <portlet-info> + <title>Group Select</title> + <short-title>Groups</short-title> + <keywords>admin,security,groups</keywords> </portlet-info> </portlet> 1.7 +0 -2 jakarta-jetspeed-2/applications/security/src/webapp/WEB-INF/jetspeed-portlet.xml Index: jetspeed-portlet.xml =================================================================== RCS file: /home/cvs/jakarta-jetspeed-2/applications/security/src/webapp/WEB-INF/jetspeed-portlet.xml,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- jetspeed-portlet.xml 5 Jan 2005 04:24:49 -0000 1.6 +++ jetspeed-portlet.xml 13 Jan 2005 06:13:17 -0000 1.7 @@ -35,8 +35,6 @@ <js:service name='GroupManager'/> <js:service name="Profiler" /> <js:service name="SSO" /> - <js:service name='PortletRegistryComponent'/> - <js:service name='EntityAccessor'/> </js:services> </portlet-app> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]