Mercurial > dive4elements > river
view flys-client/src/main/java/de/intevation/flys/client/server/auth/UserClient.java @ 3696:a050cb5f303f
Cosmetics
flys-client/trunk@5395 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Christian Lins <christian.lins@intevation.de> |
---|---|
date | Sat, 08 Sep 2012 11:26:30 +0000 |
parents | 5e4d91304484 |
children | 2e12518ff5b4 |
line wrap: on
line source
package de.intevation.flys.client.server.auth; import javax.xml.xpath.XPathConstants; import org.apache.log4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import de.intevation.artifacts.common.ArtifactNamespaceContext; import de.intevation.artifacts.common.utils.XMLUtils; import de.intevation.artifacts.httpclient.exceptions.ConnectionException; import de.intevation.artifacts.httpclient.http.HttpClient; import de.intevation.artifacts.httpclient.http.HttpClientImpl; /** * UserClient is a class to allow easier communication * with the REST based artifact user protocol */ public class UserClient { private static final Logger logger = Logger.getLogger(UserClient.class); private String url; public UserClient(String url) { this.url = url; } public boolean userExists(User user) throws ConnectionException { if (user == null) { return false; } Element data = this.findUser(user); String XPATH_USERACCOUNT = "/art:user/art:account/@art:name"; String account = XMLUtils.xpathString( data, XPATH_USERACCOUNT, ArtifactNamespaceContext.INSTANCE); if (account == null) { return false; } return account.equals(user.getAccount()); } public boolean createUser(User user) throws ConnectionException { if(user == null) { logger.warn("createUser: given user is null"); return false; } logger.debug("Creating new user " + user.getName()); HttpClient client = new HttpClientImpl(this.url); Document document = XMLUtils.newDocument(); XMLUtils.ElementCreator creator = new XMLUtils.ElementCreator( document, ArtifactNamespaceContext.NAMESPACE_URI, ArtifactNamespaceContext.NAMESPACE_PREFIX ); Element action = creator.create("action"); Element type = creator.create("type"); type.setAttribute("name", "create"); Element artuser = creator.create("user"); artuser.setAttribute("name", user.getName()); Element account = creator.create("account"); account.setAttribute("name", user.getAccount()); //TODO create roles artuser.appendChild(account); action.appendChild(type); action.appendChild(artuser); document.appendChild(action); logger.debug("Create user request xml: " + XMLUtils.toString(document)); Document resp = client.createUser(document); logger.debug("Create user response xml: " + XMLUtils.toString(resp)); String XPATH_RESPONSE = "/art:result"; Node nresult = (Node) XMLUtils.xpath( resp, XPATH_RESPONSE, XPathConstants.NODE, ArtifactNamespaceContext.INSTANCE); String result = nresult.getTextContent(); return (result != null && result.equalsIgnoreCase("success")); } public NodeList listUsers() throws ConnectionException { HttpClient client = new HttpClientImpl(this.url); Document users = (Document) client.listUsers(); String XPATH_USERS = "/art:users/art:user"; return (NodeList) XMLUtils.xpath( users, XPATH_USERS, XPathConstants.NODESET, ArtifactNamespaceContext.INSTANCE); } public Element findUser(User user) throws ConnectionException { if(user == null) { throw new IllegalArgumentException("user is null"); } HttpClient client = new HttpClientImpl(this.url); Document document = XMLUtils.newDocument(); XMLUtils.ElementCreator creator = new XMLUtils.ElementCreator( document, ArtifactNamespaceContext.NAMESPACE_URI, ArtifactNamespaceContext.NAMESPACE_PREFIX ); Element action = creator.create("action"); Element type = creator.create("type"); type.setAttribute("name", "find"); Element account = creator.create("account"); account.setAttribute("name", user.getAccount()); action.appendChild(type); action.appendChild(account); document.appendChild(action); boolean debug = logger.isDebugEnabled(); if (debug) { logger.debug("Find user request xml: " + XMLUtils.toString(document)); } Document resp = client.findUser(document); if (debug) { logger.debug("Find user request response xml: " + XMLUtils.toString(resp)); } return resp.getDocumentElement(); } } // vim: set si et fileencoding=utf-8 ts=4 sw=4 tw=80: