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