/*
============================================================================
The Apache Software License, Version 1.1
============================================================================
Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without modifica-
tion, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. The end-user documentation included with the redistribution, if any, must
include the following acknowledgment: "This product includes software
developed by the Apache Software Foundation (http://www.apache.org/)."
Alternately, this acknowledgment may appear in the software itself, if
and wherever such third-party acknowledgments normally appear.
4. The names "Apache Cocoon" and "Apache Software Foundation" must not be
used to endorse or promote products derived from this software without
prior written permission. For written permission, please contact
apache@apache.org.
5. Products derived from this software may not be called "Apache", nor may
"Apache" appear in their name, without prior written permission of the
Apache Software Foundation.
THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This software consists of voluntary contributions made by many individuals
on behalf of the Apache Software Foundation and was originally created by
Stefano Mazzocchi <stefano@apache.org>. For more information on the Apache
Software Foundation, please see <http://www.apache.org/>.
*/
package org.apache.cocoon.webapps.authentication.generation;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Map;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.components.source.SourceUtil;
import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.Response;
import org.apache.cocoon.environment.Session;
import org.apache.cocoon.generation.ComposerGenerator;
import org.apache.cocoon.webapps.authentication.context.AuthenticationContext;
import org.apache.cocoon.webapps.authentication.user.RequestState;
import org.apache.cocoon.webapps.authentication.user.UserHandler;
import org.apache.cocoon.xml.IncludeXMLConsumer;
import org.apache.cocoon.xml.XMLConsumer;
import org.apache.cocoon.xml.XMLUtils;
import org.apache.cocoon.xml.dom.DOMUtil;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceException;
import org.apache.excalibur.source.SourceParameters;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
import org.xml.sax.helpers.DefaultHandler;
/**
* This is the authentication Configuration Generator.
*
* @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
* @version CVS $Id: ConfigurationGenerator.java,v 1.3 2003/05/16 07:12:29 cziegeler Exp $
*/
public final class ConfigurationGenerator
extends ComposerGenerator {
/** Request parameter */
public static final String REQ_PARAMETER_STATE = "authstate";
public static final String REQ_PARAMETER_ROLE = "authrole";
public static final String REQ_PARAMETER_ID = "authid";
public static final String REQ_PARAMETER_USER = "authuser";
private static final String SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE = "org.apache.cocoon.webapps.generation.ConfigurationGenerator.simple-role";
/**
* Generate the configuration
*/
public void generate()
throws IOException, SAXException, ProcessingException {
this.xmlConsumer.startDocument();
RequestState state = RequestState.getState();
if ( state != null ) {
try {
UserHandler userhandler = state.getHandler();
Configuration conf = state.getModuleConfiguration("single-role-user-management");
if (conf == null) {
throw new ProcessingException("Module configuration 'single-role-user-management' for authentication user management generator not found.");
}
UserManagementHandler handler = new UserManagementHandler(conf,
state.getApplicationName());
this.showConfiguration(this.xmlConsumer, this.source, handler, userhandler.getContext());
} catch (ConfigurationException ex) {
throw new ProcessingException("ConfigurationException: " + ex, ex);
}
}
this.xmlConsumer.endDocument();
}
/**
* Show the configuration for the admin.
* If <code>src</code> is "admin" or null the admin configuration is shown.
* If <code>src</code> is "user" the configuration of the current user
* is shown.
*/
public void showConfiguration(XMLConsumer consumer,
String src,
UserManagementHandler handler,
AuthenticationContext context)
throws ProcessingException, SAXException, IOException {
// synchronized
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("BEGIN showConfiguration consumer=" + consumer + ", src="+src);
}
// get some important information
Request request = ObjectModelHelper.getRequest(this.objectModel);
Response response = ObjectModelHelper.getResponse(this.objectModel);
Session session = request.getSession();
boolean isAdmin = (src == null || src.equals("admin"));
// now start producing xml:
AttributesImpl attr = new AttributesImpl();
consumer.startElement("", "configuration", "configuration", attr);
// set the conf uri:
// This is a bug in the servlet 2.2 API!!!
// It does not contain the context: String uri = HttpUtils.getRequestURL(this.request).toString();
// So: ABSOLUTELY USELESS
String uri = response.encodeURL(request.getRequestURI());
consumer.startElement("", "uri", "uri", attr);
consumer.characters(uri.toCharArray(), 0, uri.length());
consumer.endElement("", "uri", "uri");
if (isAdmin == true) {
// build the menue
consumer.startElement("", "menue", "menue", attr);
if (handler.getNewRoleResource() != null) {
consumer.startElement("", "addrole", "addrole", attr);
consumer.endElement("", "addrole", "addrole");
}
if (handler.getDeleteRoleResource() != null) {
consumer.startElement("", "delrole", "delrole", attr);
consumer.endElement("", "delrole", "delrole");
}
consumer.endElement("", "menue", "menue");
}
synchronized (session) {
String state = request.getParameter(REQ_PARAMETER_STATE);
if (state == null) {
state = (isAdmin == true ? "main" : "seluser");
}
if (state.equals("addrole") == true) {
String role = request.getParameter(REQ_PARAMETER_ROLE);
if (role != null && role.trim().length() > 0) {
SourceParameters pars = new SourceParameters();
// first include all request parameters
Enumeration requestParameters = request.getParameterNames();
String current;
while (requestParameters.hasMoreElements() == true) {
current = (String)requestParameters.nextElement();
pars.setParameter(current, request.getParameter(current));
}
this.addRole(role, pars, handler);
} else {
role = null;
}
session.removeAttribute(SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE);
}
if (state.equals("delrole") == true) {
try {
String role = request.getParameter(REQ_PARAMETER_ROLE);
if (role != null) {
// first delete user
Document userDF = this.getUsers(role, null, handler);
NodeList users = null;
if (userDF != null) users = DOMUtil.selectNodeList(userDF, "users/user");
if (users != null) {
for(int i = 0; i < users.getLength(); i++) {
this.deleteUser(role, DOMUtil.getValueOf(users.item(i), "ID"), null, handler);
}
}
this.deleteRole(role, null, handler);
}
session.removeAttribute(SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE);
} catch (javax.xml.transform.TransformerException local) {
throw new ProcessingException("TransformerException: " + local, local);
}
}
if (state.equals("chguser") == true) {
String role;
String id;
String user;
if (isAdmin == false) {
Map pars = context.getContextInfo();
id = (String) pars.get("ID");
role = (String) pars.get("role");
user = "old";
} else {
role = request.getParameter(REQ_PARAMETER_ROLE);
id = request.getParameter(REQ_PARAMETER_ID);
user = request.getParameter(REQ_PARAMETER_USER);
}
boolean addingNewUserFailed = false;
if (role != null && id != null && user != null) {
if (user.equals("new") == true) {
SourceParameters pars = new SourceParameters();
// first include all request parameters
Enumeration requestParameters = request.getParameterNames();
String current;
while (requestParameters.hasMoreElements() == true) {
current = (String)requestParameters.nextElement();
pars.setParameter(current, request.getParameter(current));
}
addingNewUserFailed = !this.addUser(role, id, pars, handler);
if (addingNewUserFailed == false) {
consumer.startElement("", "addeduser", "addeduser", attr);
consumer.characters(id.toCharArray(), 0, id.length());
consumer.endElement("", "addeduser", "addeduser");
}
} else {
String delete = request.getParameter("authdeluser");
if (delete != null && delete.equals("true") == true) {
this.deleteUser(role, id, null, handler);
} else {
SourceParameters pars = new SourceParameters();
// first include all request parameters
Enumeration requestParameters = request.getParameterNames();
String current;
while (requestParameters.hasMoreElements() == true) {
current = (String)requestParameters.nextElement();
pars.setParameter(current, request.getParameter(current));
}
this.changeUser(role, id, pars, handler);
}
}
session.removeAttribute(SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE);
}
if (addingNewUserFailed == false) {
state = (isAdmin == true ? "adduser" : "seluser");
} else {
state = "erruser";
}
}
if (state.equals("seluser") == true) {
String role;
String id;
if (isAdmin == false) {
Map pars = context.getContextInfo();
id = (String) pars.get("ID");
role = (String) pars.get("role");
} else {
role = request.getParameter(REQ_PARAMETER_ROLE);
id = request.getParameter(REQ_PARAMETER_ID);
}
if (role != null && id != null) {
session.setAttribute(SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE, role);
// include users
Document userDF = this.getUsers(role, id, handler);
Element users = null;
try {
if (userDF != null) users = (Element)DOMUtil.getSingleNode(userDF, "users/user");
} catch (javax.xml.transform.TransformerException local) {
throw new ProcessingException("TransformerException: " + local, local);
}
consumer.startElement("", "uservalues", "uservalues", attr);
if (users != null && users.hasChildNodes() == true) {
NodeList childs = users.getChildNodes();
for(int i = 0; i < childs.getLength(); i++) {
if (childs.item(i).getNodeType() == Node.ELEMENT_NODE)
IncludeXMLConsumer.includeNode(childs.item(i), consumer, consumer);
}
}
consumer.endElement("", "uservalues", "uservalues");
}
consumer.startElement("", "user", "user", attr);
consumer.characters("old".toCharArray(), 0, 3);
consumer.endElement("", "user", "user");
if (isAdmin == false) {
consumer.startElement("", "role", "role", attr);
consumer.characters(role.toCharArray(), 0, role.length());
consumer.endElement("", "role", "role");
}
}
if (state.equals("erruser") == true) {
String role;
String id;
if (isAdmin == false) {
Map pars = context.getContextInfo();
id = (String) pars.get("ID");
role = (String) pars.get("role");
} else {
role = request.getParameter(REQ_PARAMETER_ROLE);
id = request.getParameter(REQ_PARAMETER_ID);
}
if (role != null && id != null) {
session.setAttribute(SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE, role);
// include users
Document userDF = this.getUsers(role, id, handler);
Element users = null;
try {
if (userDF != null) users = (Element)DOMUtil.getSingleNode(userDF, "users/user");
} catch (javax.xml.transform.TransformerException local) {
throw new ProcessingException("TransformerException: " + local, local);
}
consumer.startElement("", "uservalues", "uservalues", attr);
if (users != null && users.hasChildNodes() == true) {
NodeList childs = users.getChildNodes();
for(int i = 0; i < childs.getLength(); i++) {
if (childs.item(i).getNodeType() == Node.ELEMENT_NODE)
IncludeXMLConsumer.includeNode(childs.item(i), consumer, consumer);
}
}
consumer.endElement("", "uservalues", "uservalues");
}
consumer.startElement("", "user", "user", attr);
consumer.characters("error".toCharArray(), 0, 5);
consumer.endElement("", "user", "user");
if (isAdmin == false) {
consumer.startElement("", "role", "role", attr);
consumer.characters(role.toCharArray(), 0, role.length());
consumer.endElement("", "role", "role");
}
}
if (state.equals("adduser") == true) {
consumer.startElement("", "user", "user", attr);
consumer.characters("new".toCharArray(), 0, 3);
consumer.endElement("", "user", "user");
}
if (state.equals("selrole") == true) {
String role = request.getParameter(REQ_PARAMETER_ROLE);
session.setAttribute(SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE, role);
// include users
Document userDF = this.getUsers(role, null, handler);
Node users = null;
try {
if (userDF != null) users = DOMUtil.getSingleNode(userDF, "users");
} catch (javax.xml.transform.TransformerException local) {
throw new ProcessingException("TransformerException: " + local, local);
}
IncludeXMLConsumer.includeNode(users, consumer, consumer);
}
if (isAdmin == true) {
// include roles
Document rolesDF = this.getRoles(handler);
Node roles = null;
try {
if (rolesDF != null) roles = DOMUtil.getSingleNode(rolesDF, "roles");
} catch (javax.xml.transform.TransformerException local) {
throw new ProcessingException("TransformerException: " + local, local);
}
IncludeXMLConsumer.includeNode(roles, consumer, consumer);
// include selected role
String role = (String)session.getAttribute(SESSION_CONTEXT_ATTRIBUTE_ADMIN_ROLE);
if (role != null) {
consumer.startElement("", "role", "role", attr);
consumer.characters(role.toCharArray(), 0, role.length());
consumer.endElement("", "role", "role");
}
}
} // end synchronized(context)
consumer.endElement("", "configuration", "configuration");
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("END showConfiguration");
}
}
/**
* Get all users in a document fragment with the following children:
* <users>
* <user>
* <ID>...</ID>
* <role>...</role> <!-- optional -->
* <data>
* ...
* </data>
* </user>
* ....
* </users>
* The document fragment might contain further nodes at the root!
* If <code>role</code> is <code>null</code> all users are fetched,
* otherwise only the users for this role.
* If also ID is not null only the single user is fetched.
*/
public Document getUsers(String role, String ID, UserManagementHandler handler)
throws IOException, ProcessingException, SAXException {
// calling method is syned
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("BEGIN getUsers role="+role+", ID="+ID);
}
Document frag = null;
if (handler.getLoadUsersResource() != null) {
final String loadUsersResource = handler.getLoadUsersResource();
final SourceParameters loadParameters = handler.getLoadUsersResourceParameters();
SourceParameters parameters = (loadParameters == null) ? new SourceParameters()
: (SourceParameters)loadParameters;
if (handler.getApplicationName() != null) {
parameters.setSingleParameterValue("application", handler.getApplicationName());
}
if (ID != null) {
parameters.setSingleParameterValue("type", "user");
parameters.setSingleParameterValue("ID", ID);
} else {
parameters.setSingleParameterValue("type", "users");
}
if (role != null) parameters.setSingleParameterValue("role", role);
frag = this.loadResource(loadUsersResource, parameters);
}
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("END getUsers fragment="+(frag == null ? "null" : XMLUtils.serializeNodeToXML(frag)));
}
return frag;
}
/**
* Get all roles in a document fragment with the following children:
* <roles>
* <role>...</role>
* ....
* </roles>
* The document fragment might contain further nodes at the root!
*/
public Document getRoles(UserManagementHandler handler)
throws IOException, ProcessingException, SAXException {
// calling method is syned
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("BEGIN getRoles");
}
Document frag = null;
if (handler.getLoadRolesResource() != null) {
final String loadRolesResource = handler.getLoadRolesResource();
final SourceParameters loadParameters = handler.getLoadRolesResourceParameters();
SourceParameters parameters = (loadParameters == null) ? new SourceParameters()
: (SourceParameters)loadParameters.clone();
if (handler.getApplicationName() != null)
parameters.setSingleParameterValue("application", handler.getApplicationName());
parameters.setSingleParameterValue("type", "roles");
frag = this.loadResource(loadRolesResource, parameters);
}
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("END getRoles fragment="+frag);
}
return frag;
}
/**
* Add a role
*/
private void addRole(String name, SourceParameters parameters, UserManagementHandler handler)
throws IOException, ProcessingException, SAXException {
// calling method is syned
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("BEGIN addRole role="+name+", parameters="+parameters);
}
if (handler.getNewRoleResource() != null) {
final String newRoleResource = handler.getNewRoleResource();
final SourceParameters handlerPars = handler.getNewRoleResourceParameters();
if (parameters == null) parameters = new SourceParameters();
parameters.add(handlerPars);
if (handler.getApplicationName() != null)
parameters.setSingleParameterValue("application", handler.getApplicationName());
parameters.setSingleParameterValue("type", "role");
parameters.setSingleParameterValue("role", name);
this.invokeResource(newRoleResource, parameters);
}
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("END addRole");
}
}
/**
* Add a user.
* @return If a user with ID already exists <code>false</code> is returned.
*/
public boolean addUser(String role, String ID, SourceParameters parameters, UserManagementHandler handler)
throws IOException, ProcessingException, SAXException {
// calling method is syned
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("BEGIN addUser role="+role+", ID="+ID+", parameters="+parameters);
}
boolean result = false;
if (handler.getNewUserResource() != null
&& ID != null
&& ID.trim().length() > 0) {
// first test if a user with this ID already exists
Document user = this.getUsers(null, null, handler);
Node node = null;
if (user != null) {
try {
node = DOMUtil.getSingleNode(user, "users/user/ID[text()='"+ID+"']");
} catch (javax.xml.transform.TransformerException local) {
throw new ProcessingException("Transformer exception: " + local, local);
}
}
if (user == null || node == null) {
final String newUserResource = handler.getNewUserResource();
final SourceParameters newUsersPars = handler.getNewUserResourceParameters();
if (parameters == null) parameters = new SourceParameters();
parameters.add(newUsersPars);
if (handler.getApplicationName() != null)
parameters.setSingleParameterValue("application", handler.getApplicationName());
parameters.setSingleParameterValue("type", "user");
parameters.setSingleParameterValue("role", role);
parameters.setSingleParameterValue("ID", ID);
this.invokeResource(newUserResource, parameters);
result = true;
}
}
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("END addUser success="+result);
}
return result;
}
/**
* Delete a role
*/
private void deleteRole(String name, SourceParameters parameters, UserManagementHandler handler)
throws IOException, ProcessingException, SAXException {
// calling method is syned
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("BEGIN deleteRole role="+name+", parameters="+parameters);
}
if (handler.getDeleteRoleResource() != null) {
final String deleteRoleResource = handler.getDeleteRoleResource();
final SourceParameters handlerPars = handler.getDeleteRoleResourceParameters();
if (parameters == null) parameters = new SourceParameters();
parameters.add(handlerPars);
if (handler.getApplicationName() != null)
parameters.setSingleParameterValue("application", handler.getApplicationName());
parameters.setSingleParameterValue("type", "role");
parameters.setSingleParameterValue("role", name);
this.invokeResource(deleteRoleResource, parameters);
}
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("END deleteRole");
}
}
/**
* Delete a user
*/
private void deleteUser(String role, String name, SourceParameters parameters, UserManagementHandler handler)
throws IOException, ProcessingException, SAXException {
// calling method is syned
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("BEGIN deleteUser role="+role+", ID="+name+", parameters="+parameters);
}
if (handler.getDeleteUserResource() != null) {
final String deleteUserResource = handler.getDeleteUserResource();
final SourceParameters handlerPars = handler.getDeleteUserResourceParameters();
if (parameters == null) parameters = new SourceParameters();
parameters.add(handlerPars);
if (handler.getApplicationName() != null)
parameters.setSingleParameterValue("application", handler.getApplicationName());
parameters.setSingleParameterValue("type", "user");
parameters.setSingleParameterValue("role", role);
parameters.setSingleParameterValue("ID", name);
this.invokeResource(deleteUserResource, parameters);
}
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("END deleteUser");
}
}
/**
* Change a user
*/
private void changeUser(String role, String name, SourceParameters parameters, UserManagementHandler handler)
throws IOException, ProcessingException, SAXException {
// calling method is syned
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("BEGIN changeUser role="+role+", ID="+name+", parameters="+parameters);
}
if (handler.getChangeUserResource() != null) {
final String changeUserResource = handler.getChangeUserResource();
final SourceParameters handlerPars = handler.getChangeUserResourceParameters();
if (parameters == null) parameters = new SourceParameters();
parameters.add(handlerPars);
if (handler.getApplicationName() != null)
parameters.setSingleParameterValue("application", handler.getApplicationName());
parameters.setSingleParameterValue("type", "user");
parameters.setSingleParameterValue("role", role);
parameters.setSingleParameterValue("ID", name);
this.invokeResource(changeUserResource, parameters);
}
if (this.getLogger().isDebugEnabled() == true) {
this.getLogger().debug("END changeUser");
}
}
/**
* Invoke resource
*/
private void invokeResource(String resource,
SourceParameters parameters)
throws IOException, ProcessingException, SAXException {
Source source = null;
try {
source = SourceUtil.getSource(resource,
null,
parameters,
this.resolver);
SourceUtil.parse(this.manager, source, new DefaultHandler());
} catch (SourceException se) {
throw SourceUtil.handle(se);
} finally {
this.resolver.release(source);
}
}
/**
* Load XML resource
*/
private Document loadResource(String resource,
SourceParameters parameters)
throws IOException, ProcessingException, SAXException {
Source source = null;
try {
source = SourceUtil.getSource(resource,
null,
parameters,
this.resolver);
return SourceUtil.toDOM(source);
} catch (SourceException se) {
throw SourceUtil.handle(se);
} finally {
this.resolver.release(source);
}
}
}
final class UserManagementHandler {
/** The name of the current application */
private String applicationName;
/** The load-users resource */
private String loadUsersResource;
private SourceParameters loadUsersResourceParameters;
/** The load-roles resource */
private String loadRolesResource;
private SourceParameters loadRolesResourceParameters;
/** The new-user resource */
private String newUserResource;
private SourceParameters newUserResourceParameters;
/** The new-role resource */
private String newRoleResource;
private SourceParameters newRoleResourceParameters;
/** The delete-role resource */
private String deleteRoleResource;
private SourceParameters deleteRoleResourceParameters;
/** The delete-user resource */
private String deleteUserResource;
private SourceParameters deleteUserResourceParameters;
/** The change-user resource */
private String changeUserResource;
private SourceParameters changeUserResourceParameters;
/**
* Create a new handler object.
*/
public UserManagementHandler(Configuration conf,
String appName)
throws ProcessingException, SAXException, IOException, ConfigurationException {
Configuration child;
this.applicationName = appName;
// get load-users resource (optional)
child = conf.getChild("load-users", false);
if (child != null) {
this.loadUsersResource = child.getAttribute("uri");
this.loadUsersResourceParameters = SourceParameters.create(child);
}
// get load-roles resource (optional)
child = conf.getChild("load-roles", false);
if (child != null) {
this.loadRolesResource = child.getAttribute("uri");
this.loadRolesResourceParameters = SourceParameters.create(child);
}
// get new user resource (optional)
child = conf.getChild("new-user", false);
if (child != null) {
this.newUserResource = child.getAttribute("uri");
this.newUserResourceParameters = SourceParameters.create(child);
}
// get new role resource (optional)
child = conf.getChild("new-role", false);
if (child != null) {
this.newRoleResource = child.getAttribute("uri");
this.newRoleResourceParameters = SourceParameters.create(child);
}
// get delete user resource (optional)
child = conf.getChild("delete-user", false);
if (child != null) {
this.deleteUserResource = child.getAttribute("uri");
this.deleteUserResourceParameters = SourceParameters.create(child);
}
// get delete role resource (optional)
child = conf.getChild("delete-role", false);
if (child != null) {
this.deleteRoleResource = child.getAttribute("uri");
this.deleteRoleResourceParameters = SourceParameters.create(child);
}
// get change user resource (optional)
child = conf.getChild("change-user", false);
if (child != null) {
this.changeUserResource = child.getAttribute("uri");
this.changeUserResourceParameters = SourceParameters.create(child);
}
}
/**
* Get the name of the current application
*/
public String getApplicationName() { return this.applicationName; }
/**
* Get the load users resource
*/
public String getLoadUsersResource() { return this.loadUsersResource; }
public SourceParameters getLoadUsersResourceParameters() { return this.loadUsersResourceParameters; }
/**
* Get the load roles resource
*/
public String getLoadRolesResource() { return this.loadRolesResource; }
public SourceParameters getLoadRolesResourceParameters() { return this.loadRolesResourceParameters; }
/**
* Get the new user resource
*/
public String getNewUserResource() { return this.newUserResource; }
public SourceParameters getNewUserResourceParameters() { return this.newUserResourceParameters; }
/**
* Get the new role resource
*/
public String getNewRoleResource() { return this.newRoleResource; }
public SourceParameters getNewRoleResourceParameters() { return this.newRoleResourceParameters; }
/** Get the delete user resource */
public String getDeleteUserResource() { return this.deleteUserResource; }
public SourceParameters getDeleteUserResourceParameters() { return this.deleteUserResourceParameters; }
/** Get the delete role resource */
public String getDeleteRoleResource() { return this.deleteRoleResource; }
public SourceParameters getDeleteRoleResourceParameters() { return this.deleteRoleResourceParameters; }
/** Get the change user resource */
public String getChangeUserResource() { return this.changeUserResource; }
public SourceParameters getChangeUserResourceParameters() { return this.changeUserResourceParameters; }
}