}
// 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) {
SourceParameters pars = authManager.createParameters(null);
id = pars.getParameter("ID", null);
role = pars.getParameter("role", null);
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) {
SourceParameters pars = authManager.createParameters(null);
id = pars.getParameter("ID", null);
role = pars.getParameter("role", null);
} 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) {
SourceParameters pars = authManager.createParameters(null);
id = pars.getParameter("ID", null);
role = pars.getParameter("role", null);
} 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");
}