/* * RapidMiner * * Copyright (C) 2001-2011 by Rapid-I and the contributors * * Complete list of developers available at our web site: * * http://rapid-i.com * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program 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 Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see http://www.gnu.org/licenses/. */ package com.rapidminer.tools; import java.net.MalformedURLException; import java.net.URL; import java.util.HashMap; import java.util.Map; import org.apache.commons.httpclient.HttpClient; import org.apache.xmlrpc.XmlRpcException; import org.apache.xmlrpc.client.XmlRpcClient; import org.apache.xmlrpc.client.XmlRpcClientConfigImpl; import org.apache.xmlrpc.client.XmlRpcCommonsTransportFactory; /** * Handles XMLRPC connections to BugZilla. * * @author Marco Boeck */ public class XmlRpcHandler { public static final String BUGZILLA_URL = "http://bugs.rapid-i.com"; private static final String BUGZILLA_APPENDIX = "xmlrpc.cgi"; /** * Handles the login to a given BugZilla XmlRpc server. * * @param serverURL the URL to the server, e.g. "http://my.bug-server.com" * @param login the BugZilla login * @param password the BugZilla password * @return the logged in XmlRpcClient instance * @throws MalformedURLException * @throws XmlRpcException */ public static synchronized XmlRpcClient login(String serverURL, String login, char[] password) throws MalformedURLException, XmlRpcException { String server; if (serverURL.endsWith("/")) { server = serverURL + BUGZILLA_APPENDIX; } else { server = serverURL + "/" + BUGZILLA_APPENDIX; } HttpClient httpClient = new HttpClient(); XmlRpcClient rpcClient = new XmlRpcClient(); XmlRpcCommonsTransportFactory factory = new XmlRpcCommonsTransportFactory(rpcClient); XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); factory.setHttpClient(httpClient); rpcClient.setTransportFactory(factory); config.setServerURL(new URL(server)); rpcClient.setConfig(config); // map of the login data Map<String, String> loginMap = new HashMap<String, String>(); loginMap.put("login", login); loginMap.put("password", new String(password)); loginMap.put("rememberlogin", "true"); Map resultMap = (Map)rpcClient.execute("User.login", new Object[]{ loginMap }); LogService.getRoot().fine("Logged into BugZilla at '" + serverURL + "' as user '" + resultMap.get("id") + "'."); for (int i=0; i<password.length; i++) { password[i] = 0; } return rpcClient; } }