You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-user@portals.apache.org by Nagesh Mittal <nm...@cisco.com> on 2004/03/16 06:37:27 UTC
Role Updation Error
hi,
I am using Jetspeed 1.4-b4 in my portal application.
When I try to update the roles for a user, I get the following exception:
[02 Mar 2004 07:00:47 ERROR] - Failed update role+permission:
java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
Any idea about how to tackle this problem?
Also, I am getting another error:
[15 Mar 2004 12:31:58 ERROR] - Error rendering Velocity template:
layouts/psf.vm: Unable to find resource 'layouts/psf.vm'
org.apache.velocity.exception.ResourceNotFoundException: Unable to find
resource 'layouts/psf.vm'
at
org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(Resour
ceManagerImpl.java:501)
at
org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(Resourc
eManagerImpl.java:384)
at
org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java
:814)
at
org.apache.velocity.runtime.RuntimeSingleton.getTemplate(RuntimeSingleton.ja
va:355)
at org.apache.velocity.app.Velocity.mergeTemplate(Velocity.java:482)
at org.apache.velocity.app.Velocity.mergeTemplate(Velocity.java:461)
rethrown as
org.apache.turbine.util.TurbineException: Error rendering Velocity
template: layouts/psf.vm: Unable to find resource 'layouts/psf.vm'
............................................
............................................
............................................
Thanks in advance.
Kind Regards,
Nagesh Mittal
RE: Role Updation Error
Posted by Nagesh Mittal <nm...@cisco.com>.
hi,
I am using the following velocity macro for role updation:
==========================================================================
-user-role-form.vm-
#**
@author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
@version $Id: user-role-form.vm,v 1.1.1.1 2003/10/22 03:24:59 ssheshad Exp $
*#
<h3>Roles for $user.FirstName $user.LastName<h3>
#set ( $headings = ["Role Name", "Assign"] )
<form method="post"
action="$jslink.getPaneByName("UserBrowser").addPathInfo($jslink.ActionKey,"
portlets.security.UserRoleUpdateAction")">
<table>
<tr>
<td>
<table border="true" cellspacing="1" cellpadding="3">
<tr>
#foreach ($heading in $headings)
#headerCell ($heading)
#end
</tr>
#foreach ($role in $roles)
<tr>
#entryCell ($role.Name)
#formCheckBox ($role.Name
$selected.elementAt($velocityCount).booleanValue())
</tr>
#end
</table>
</td>
</tr>
<tr>
<td>
<input type="submit" name="eventSubmit_doUpdate" value="Update"/>
<td>
<td>
$!msg
</td>
</tr>
</table>
<input type="hidden" name="entityid" value="$!user.UserName"/>
</form>
==========================================================================
This macro submits to class
"org.apache.jetspeed.modules.actions.portlets.security.UserRoleUpdateAction"
. Following is the code for UserRoleUpdateAction class:
/* UserRoleUpdateAction Class*/
package org.apache.jetspeed.modules.actions.portlets.security;
import java.util.*;
import org.apache.jetspeed.modules.actions.portlets.VelocityPortletAction;
import org.apache.jetspeed.om.security.Role;
import org.apache.jetspeed.portal.portlets.VelocityPortlet;
import org.apache.jetspeed.services.JetspeedSecurity;
import org.apache.jetspeed.services.resources.JetspeedResources;
import org.apache.turbine.om.security.User;
import org.apache.turbine.util.*;
import org.apache.velocity.context.Context;
// Referenced classes of package
org.apache.jetspeed.modules.actions.portlets.security:
// SecurityConstants
public class UserRoleUpdateAction extends VelocityPortletAction
{
public UserRoleUpdateAction()
{
}
protected void buildMaximizedContext(VelocityPortlet portlet, Context
context, RunData rundata)
{
buildNormalContext(portlet, context, rundata);
}
protected void buildConfigureContext(VelocityPortlet portlet, Context
context, RunData rundata)
{
buildNormalContext(portlet, context, rundata);
}
protected void buildNormalContext(VelocityPortlet portlet, Context
context, RunData rundata)
{
try
{
Role role = null;
String mode = rundata.getParameters().getString("mode");
String entityid = rundata.getParameters().getString("entityid");
if(entityid == null || entityid.trim().length() == 0)
return;
buildUserRoleContext(portlet, context, rundata, entityid);
String msgid = rundata.getParameters().getString("msgid");
if(msgid != null)
{
int id = Integer.parseInt(msgid);
if(id < SecurityConstants.MESSAGES.length)
context.put("msg", SecurityConstants.MESSAGES[id]);
}
}
catch(Exception e)
{
Log.error(e);
rundata.setMessage("Error in Jetspeed User Role Security: " +
e.toString());
rundata.setStackTrace(StringUtils.stackTrace(e), e);
rundata.setScreenTemplate(JetspeedResources.getString("template.error",
"Error"));
}
}
public void doUpdate(RunData rundata, Context context)
throws Exception
{
String entityid = rundata.getParameters().getString("entityid");
if(entityid == null || entityid.trim().length() == 0)
{
Log.error("UserRoleBrowser: Failed to get entity: " + entityid);
DynamicURI duri = new DynamicURI(rundata);
duri.addPathInfo("js_panename", "UserRoleForm");
duri.addPathInfo("msgid", 5);
rundata.setRedirectURI(duri.toString());
return;
}
org.apache.jetspeed.om.security.JetspeedUser user =
JetspeedSecurity.getUser(entityid);
if(null == user)
{
Log.error("UserRoleBrowser: Failed to get user: " + entityid);
DynamicURI duri = new DynamicURI(rundata);
duri.addPathInfo("js_panename", "UserRoleForm");
duri.addPathInfo("msgid", 5);
rundata.setRedirectURI(duri.toString());
return;
}
try
{
List roles = (List)rundata.getUser().getTemp("roles");
List selected = (List)rundata.getUser().getTemp("selected");
if(roles == null || selected == null)
{
DynamicURI duri = new DynamicURI(rundata);
duri.addPathInfo("js_panename", "UserRoleForm");
duri.addPathInfo("msgid", 5);
rundata.setRedirectURI(duri.toString());
return;
}
for(int ix = 0; ix < roles.size(); ix++)
{
boolean newValue = rundata.getParameters().getBoolean("box_"
+ ((Role)roles.get(ix)).getName(), false);
boolean oldValue = ((Boolean)selected.get(ix +
1)).booleanValue();
if(newValue != oldValue)
if(newValue)
JetspeedSecurity.grantRole(user.getUserName(),
((Role)roles.get(ix)).getName());
else
JetspeedSecurity.revokeRole(user.getUserName(),
((Role)roles.get(ix)).getName());
}
rundata.getUser().setTemp("roles", null);
rundata.getUser().setTemp("selected", null);
}
catch(Exception e)
{
Log.error("Failed update role+permission: " + e); //This
excepion is being caught in the application.
DynamicURI duri = new DynamicURI(rundata);
duri.addPathInfo("js_panename", "UserRoleForm");
duri.addPathInfo("msgid", 0);
if(user != null)
duri.addPathInfo("entityid", user.getUserName());
rundata.setRedirectURI(duri.toString());
}
}
private void buildUserRoleContext(VelocityPortlet portlet, Context
context, RunData rundata, String userid)
throws Exception
{
org.apache.jetspeed.om.security.JetspeedUser user =
JetspeedSecurity.getUser(userid);
if(null == user)
{
Log.error("UserRoleBrowser: Failed to get user: " + userid);
return;
}
Iterator roles = JetspeedSecurity.getRoles();
Vector masterRoles = new Vector();
Vector selected = new Vector();
int ix = 0;
boolean sel = false;
selected.add(ix, new Boolean(sel));
for(; roles.hasNext(); selected.add(ix, new Boolean(sel)))
{
Role role = (Role)roles.next();
masterRoles.add(role);
sel = JetspeedSecurity.hasRole(user.getUserName(),
role.getName());
ix++;
}
masterRoles.trimToSize();
selected.trimToSize();
rundata.getUser().setTemp("roles", masterRoles);
rundata.getUser().setTemp("selected", selected);
context.put("user", user);
context.put("roles", masterRoles);
context.put("selected", selected);
}
}
============================================================================
If anything else is required, please let me know that.
Thanks.
-----Original Message-----
From: scott@macrisolutions.com [mailto:scott@macrisolutions.com]
Sent: Tuesday, March 16, 2004 7:41 PM
To: Jetspeed Users List; nmittal@cisco.com
Subject: Re: Role Updation Error
Send the code you are using so we can have a look at it.
Quoting Nagesh Mittal <nm...@cisco.com>:
** hi,
**
** I am using Jetspeed 1.4-b4 in my portal application.
** When I try to update the roles for a user, I get the following exception:
**
** [02 Mar 2004 07:00:47 ERROR] - Failed update role+permission:
** java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
**
** Any idea about how to tackle this problem?
**
** Also, I am getting another error:
**
** [15 Mar 2004 12:31:58 ERROR] - Error rendering Velocity template:
** layouts/psf.vm: Unable to find resource 'layouts/psf.vm'
** org.apache.velocity.exception.ResourceNotFoundException: Unable to find
** resource 'layouts/psf.vm'
** at
**
org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(Resour
** ceManagerImpl.java:501)
** at
**
org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(Resourc
** eManagerImpl.java:384)
** at
**
org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java
** :814)
** at
**
org.apache.velocity.runtime.RuntimeSingleton.getTemplate(RuntimeSingleton.ja
** va:355)
** at org.apache.velocity.app.Velocity.mergeTemplate(Velocity.java:482)
** at org.apache.velocity.app.Velocity.mergeTemplate(Velocity.java:461)
** rethrown as
** org.apache.turbine.util.TurbineException: Error rendering Velocity
** template: layouts/psf.vm: Unable to find resource 'layouts/psf.vm'
** ............................................
** ............................................
** ............................................
**
**
** Thanks in advance.
**
** Kind Regards,
**
** Nagesh Mittal
**
**
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-user-help@jakarta.apache.org
Re: Role Updation Error
Posted by sc...@macrisolutions.com.
Send the code you are using so we can have a look at it.
Quoting Nagesh Mittal <nm...@cisco.com>:
** hi,
**
** I am using Jetspeed 1.4-b4 in my portal application.
** When I try to update the roles for a user, I get the following exception:
**
** [02 Mar 2004 07:00:47 ERROR] - Failed update role+permission:
** java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
**
** Any idea about how to tackle this problem?
**
** Also, I am getting another error:
**
** [15 Mar 2004 12:31:58 ERROR] - Error rendering Velocity template:
** layouts/psf.vm: Unable to find resource 'layouts/psf.vm'
** org.apache.velocity.exception.ResourceNotFoundException: Unable to find
** resource 'layouts/psf.vm'
** at
** org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(Resour
** ceManagerImpl.java:501)
** at
** org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(Resourc
** eManagerImpl.java:384)
** at
** org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java
** :814)
** at
** org.apache.velocity.runtime.RuntimeSingleton.getTemplate(RuntimeSingleton.ja
** va:355)
** at org.apache.velocity.app.Velocity.mergeTemplate(Velocity.java:482)
** at org.apache.velocity.app.Velocity.mergeTemplate(Velocity.java:461)
** rethrown as
** org.apache.turbine.util.TurbineException: Error rendering Velocity
** template: layouts/psf.vm: Unable to find resource 'layouts/psf.vm'
** ............................................
** ............................................
** ............................................
**
**
** Thanks in advance.
**
** Kind Regards,
**
** Nagesh Mittal
**
**
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-user-help@jakarta.apache.org