2 de marzo de 2009

Trabajando con el PUMA SPI

Aqui les traigo el bloque de código que acabo de completar y probar.

El problema: Obtener los grupos de usuario a los que pertenece el Usuario logueado al portal. Todo ello desde un portlet. En mi caso, me sirve porque de acuerdo al grupo de usuario que pertenezca, debo o no mostrar ciertos controles en mi portlet.

Aqui el codigo:

Método init

public void init() throws PortletException{
try {
InitialContext ctx = new InitialContext();
Object homectx.lookup("portletservice/com.ibm.portal.um.portletservice.PumaHome");
if(home != null)
serviceHome = (PortletServiceHome)home;
} catch (Exception e) {
System.out.println("No se encontro el objeto home");
}

}


Método doView

public void doView(RenderRequest request, RenderResponse response)
throws PortletException, IOException {

response.setContentType(request.getResponseContentType());

if(serviceHome != null){

PumaHome service = (PumaHome) serviceHome.getPortletService(PumaHome.class);
PumaProfile profile = service.getProfile(request);
PumaLocator plocator = service.getLocator( request );

try {

// Obtenemos el usuario actualmente en la sesion
User usuario = profile.getCurrentUser();

// Preparamos una lista de los atributos deseados
List attributes = new ArrayList();
attributes.add("cn");

// Obtenemos los grupos a los que pertenece el usuario
List groups = plocator.findGroupsByPrincipal( usuario, false );

Iterator group_itr = groups.iterator();

System.out.println( "EL USUARIO PERTENECE A LOS SIGUIENTES GRUPOS: " );
while( group_itr.hasNext() ) {

Group group = ( Group )group_itr.next();
Map group_attributes = profile.getAttributes( group, attributes );
String group_cn = ( String )group_attributes.get( ( Object ) "cn" );

System.out.println( " - " + group_cn );

}

} catch (Exception e) {
e.printStackTrace();
}
}

PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher("/jsp/html/view.jsp");
rd.include(request,response);

}


Gracias a mi amigo Kenneth por el enlace que me recomendó. Fue muy útil

A mi me sirvió. Ahora necesito esta misma funcionalidad pero implementarla para su uso en Portlet Factory. Estaré colgando la solución en cuanto la tenga.

Prueben este código. Puede ser útil quien sabe cuando!

1 comentario:

  1. Que tal Andres, muy interesante el tema, ya lo hiciste para WebSphere Portlet Factory?

    ResponderEliminar