it.geosolutions.geonetwork.op.GNLogin.java Source code

Java tutorial

Introduction

Here is the source code for it.geosolutions.geonetwork.op.GNLogin.java

Source

/*
 *  GeoNetwork-Manager - Simple Manager Library for GeoNetwork
 *
 *  Copyright (C) 2007,2011 GeoSolutions S.A.S.
 *  http://www.geo-solutions.it
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
package it.geosolutions.geonetwork.op;

import it.geosolutions.geonetwork.util.HTTPUtils;

import org.apache.commons.httpclient.HttpStatus;
import org.apache.log4j.Logger;

import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

/**
 * Perform a GN login.<br/>
 * GN auth is carried out via a JSESSIONID cookie returned by a successful login
 * call.<br/>
 *
 * <ul>
 * <li>Url: <tt>http://<i>server</i>:<i>port</i>/geonetwork/srv/en/xml.user.login</tt></li>
 * <li>Mime-type: <tt>application/xml</tt></li>
 * <li>Post request: <pre>{@code
 *   <?xml version="1.0" encoding="UTF-8"?>
 *   <request>
 *       <username>admin</username>
 *       <password>admin</password>
 *   </request>
 * }</pre></li>
 * </ul>
 * 
 * @author ETj (etj at geo-solutions.it)
 */
public class GNLogin {

    private final static Logger LOGGER = Logger.getLogger(GNLogin.class);

    /*
    * @return true if login was successful
    * 
    * @see <a href="http://geonetwork-opensource.org/manuals/trunk/developer/xml_services/login_xml_services.html#login-services" >GeoNetwork documentation about login</a>
    */
    public static boolean login(HTTPUtils connection, String serviceURL, String username, String password) {
        Element request = new Element("request");
        request.addContent(new Element("username").setText(username));
        request.addContent(new Element("password").setText(password));

        XMLOutputter outputter = new XMLOutputter(Format.getCompactFormat());
        String xml = outputter.outputString(request);

        String loginURL = serviceURL + "/srv/en/xml.user.login";
        String out = connection.postXml(loginURL, xml);

        return connection.getLastHttpStatus() == HttpStatus.SC_OK;
    }
}