/*
* (C) Copyright 2007 Hewlett-Packard Development Company, LP
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* For more information: www.smartfrog.org
*/
package org.jboss.picketlink.idm;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.logging.Level;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.jboss.jbossidmservlet.bean.GroupBean;
import org.jboss.jbossidmservlet.bean.UserBean;
import org.jboss.jbossidmservlet.processor.IdmProcessor;
import org.picketlink.idm.api.Group;
import org.picketlink.idm.api.RoleType;
import org.picketlink.idm.api.User;
import org.picketlink.idm.common.exception.IdentityConfigurationException;
import org.picketlink.idm.common.exception.IdentityException;
/**
*
* @author vrockai
*/
public class IdmServlet extends HttpServlet {
private static final long serialVersionUID = 33141L;
//IdmProcessor idmProc;
@Override
public void init() throws ServletException {
try {
IdmProcessor idmProc = new IdmProcessor();
idmProc.initializeDB();
} catch (IdentityConfigurationException ex) {
Logger.getLogger(IdmServlet.class.getName()).error(ex);
} catch (IdentityException ex) {
Logger.getLogger(IdmServlet.class.getName()).error(ex);
}
}
private IdmProcessor getIdmProcessor(HttpServletRequest request) {
IdmProcessor idmProc = null;
idmProc = (IdmProcessor) request.getAttribute("idmProc");
if (idmProc == null) {
try {
idmProc = new IdmProcessor();
request.setAttribute("idmProc", idmProc);
} catch (IdentityConfigurationException ex) {
java.util.logging.Logger.getLogger(IdmServlet.class.getName()).log(Level.SEVERE, null, ex);
} catch (IdentityException ex) {
java.util.logging.Logger.getLogger(IdmServlet.class.getName()).log(Level.SEVERE, null, ex);
}
}
return idmProc;
}
@Override
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
IdmProcessor idmProc = getIdmProcessor(request);
Collection<UserBean> userList = idmProc.getAllUsers();
Collection<GroupBean> groupList = idmProc.getAllGroups();
Collection<RoleType> roletypeList = idmProc.getAllRoletypes();
request.getSession().setAttribute("userList", userList);
request.getSession().setAttribute("groupList", groupList);
request.getSession().setAttribute("roletypeList", roletypeList);
request.getRequestDispatcher("main.jsp").forward(request, response);
}
@Override
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
String method = request.getServletPath().substring(1);
try {
Method postMethod = getClass().getMethod(method, HttpServletRequest.class, HttpServletResponse.class);
postMethod.invoke(this, request, response);
} catch (IllegalAccessException ex) {
Logger.getLogger(IdmServlet.class.getName()).error(ex);
} catch (IllegalArgumentException ex) {
Logger.getLogger(IdmServlet.class.getName()).error(ex);
} catch (InvocationTargetException ex) {
Logger.getLogger(IdmServlet.class.getName()).error(ex);
} catch (NoSuchMethodException ex) {
Logger.getLogger(IdmServlet.class.getName()).error(ex);
} catch (SecurityException ex) {
Logger.getLogger(IdmServlet.class.getName()).error(ex);
}
doGet(request, response);
}
public Group createGroup(HttpServletRequest request, HttpServletResponse response) {
IdmProcessor idmProc = getIdmProcessor(request);
String groupName = request.getParameter("groupId");
Group newGroup = idmProc.createGroup(groupName);
return newGroup;
}
public User createUser(HttpServletRequest request, HttpServletResponse response) {
IdmProcessor idmProc = getIdmProcessor(request);
String userId = request.getParameter("userId");
User user = idmProc.createUser(userId);
return user;
}
public void deleteGroup(HttpServletRequest request, HttpServletResponse response) {
IdmProcessor idmProc = getIdmProcessor(request);
String groupName = request.getParameter("groupId");
idmProc.deleteGroup(groupName);
}
public void deleteUser(HttpServletRequest request, HttpServletResponse response) {
IdmProcessor idmProc = getIdmProcessor(request);
String userId = request.getParameter("userId");
idmProc.deleteUser(userId);
}
public void assignGroup(HttpServletRequest request, HttpServletResponse response) {
IdmProcessor idmProc = getIdmProcessor(request);
String groupId = request.getParameter("groupId");
String userId = request.getParameter("userId");
idmProc.associateUser(userId, groupId);
}
public void deassignGroup(HttpServletRequest request, HttpServletResponse response) {
IdmProcessor idmProc = getIdmProcessor(request);
String groupId = request.getParameter("groupId");
String userId = request.getParameter("userId");
idmProc.deassociateUser(userId, groupId);
}
public void createAttribute(HttpServletRequest request, HttpServletResponse response) {
IdmProcessor idmProc = getIdmProcessor(request);
String userId = request.getParameter("userId");
String attName = request.getParameter("attName");
String attVal = request.getParameter("attVal");
idmProc.createAttribute(userId, attName, attVal);
}
public void deleteAttribute(HttpServletRequest request, HttpServletResponse response) {
IdmProcessor idmProc = getIdmProcessor(request);
String userId = request.getParameter("userId");
String attName = request.getParameter("attName");
String attVal = request.getParameter("attVal");
idmProc.deleteAttribute(userId, attName, attVal);
}
public void renameAttribute(HttpServletRequest request, HttpServletResponse response) {
IdmProcessor idmProc = getIdmProcessor(request);
String userId = request.getParameter("userId");
String attName = request.getParameter("attName");
String attVal = request.getParameter("attVal");
System.out.println(userId + "/" + attName + "/" + attVal);
idmProc.renameAttribute(userId, attName, attVal);
}
public void createRoletype(HttpServletRequest request, HttpServletResponse response) {
IdmProcessor idmProc = getIdmProcessor(request);
String roletypeId = request.getParameter("roletypeId");
idmProc.createRoletype(roletypeId);
}
public void deleteRoletype(HttpServletRequest request, HttpServletResponse response) {
IdmProcessor idmProc = getIdmProcessor(request);
String roletypeId = request.getParameter("roletypeId");
idmProc.deleteRoletype(roletypeId);
}
public void associateRole(HttpServletRequest request, HttpServletResponse response) {
IdmProcessor idmProc = getIdmProcessor(request);
String roletypeId = request.getParameter("roletypeId");
String userId = request.getParameter("userId");
String groupName = request.getParameter("groupName");
idmProc.associateRole(roletypeId, userId, groupName);
}
public void deassociateRole(HttpServletRequest request, HttpServletResponse response) {
IdmProcessor idmProc = getIdmProcessor(request);
String roletypeId = request.getParameter("roletypeId");
String userId = request.getParameter("userId");
String groupName = request.getParameter("groupName");
idmProc.deassociateRole(roletypeId, userId, groupName);
}
}