Package com.google.appsforyourdomain.provisioning

Source Code of com.google.appsforyourdomain.provisioning.AppsUtil

/**
* Copyright 2006 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/

package com.google.appsforyourdomain.provisioning;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

/**
* This is a Util class with methods to post HTTP request
* and parse XML.
*
*/
public class AppsUtil {

/**
  * Posts the specified postContent to the urlString and
  * returns a JDOM Document object containing the XML response.
  *
  * @param urlString URL destination
  * @param postContent XML request
  * @return a JDOM Document object containing the XML response
  */
  public static Document postHttpRequest(String urlString, String postContent)
      throws AppsForYourDomainException {
    try {
     
      // Send content
      final HttpClient client = new HttpClient();
      PostMethod method = new PostMethod(urlString);
      StringRequestEntity sre =
          new StringRequestEntity(postContent, "text/xml", "UTF-8");
      method.setRequestEntity(sre);
      client.executeMethod(method);
     
      // Get response
      final SAXBuilder builder = new SAXBuilder();
      BufferedReader rd = new BufferedReader(
          new InputStreamReader(method.getResponseBodyAsStream()));
      final Document doc = builder.build(rd);
      return doc;
    } catch (IOException e) {
     
      // error in URL Connection or reading response
      throw new ConnectionException(e.getMessage());
    } catch (JDOMException e) {
     
      // error in converting to JDOM Document
      throw new ParseException(e.getMessage());
    }
  }
         
  /**
   * Parses a JDOM Document and returns the first element that matches the
   * specified path.
   *
   * @param doc JDOM document
   * @param path XPATH to the element
   * @return the value of the element
   */
  public static String parseXml(Document doc, String path)
      throws AppsForYourDomainException {
    try {
      XPath statusXPath = XPath.newInstance(path);
      Object node = statusXPath.selectSingleNode(doc);
      if (node == null) {
        return ""; // Did not find any nodes matching in doc
      }
      Element element;
      if (node instanceof Element) {
        element = (Element) node;
        return element.getText();
      } else {
        return ""; // Returned node has unexpected type
      }
    } catch (JDOMException e) {
      throw new ParseException(e.getMessage());
    }
  }
     
  /**
   * Parses a JDOM Document and returns a list of all matching elements that
   * match the specified path.
   *
   * @param doc JDOM document
   * @param path XPATH to the element
   * @return a list of all matching element values
   */
  public static List<String> parseXmlMultipleNodes(Document doc, String path)
      throws AppsForYourDomainException {
    try {
      List nodes = XPath.selectNodes(doc, path);
      List<String> infoList = new ArrayList<String>();
      for (Object node : nodes) {
        if (node instanceof Element) {
          Element element = (Element) node;
          infoList.add(element.getText());
        }
      }
      return infoList;
    } catch (JDOMException e) {
      throw new ParseException(e.getMessage());
    }
  }
}
TOP

Related Classes of com.google.appsforyourdomain.provisioning.AppsUtil

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.