View Javadoc

1   /*
2    * This file is part of Domingo
3    * an Open Source Java-API to Lotus Notes/Domino
4    * hosted at http://domingo.sourceforge.net
5    *
6    * Copyright (c) 2003-2007 Beck et al. projects GmbH Munich, Germany (http://www.bea.de)
7    *
8    * This library is free software; you can redistribute it and/or
9    * modify it under the terms of the GNU Lesser General Public
10   * License as published by the Free Software Foundation; either
11   * version 2.1 of the License, or (at your option) any later version.
12   *
13   * This library is distributed in the hope that it will be useful,
14   * but WITHOUT ANY WARRANTY; without even the implied warranty of
15   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16   * Lesser General Public License for more details.
17   *
18   * You should have received a copy of the GNU Lesser General Public
19   * License along with this library; if not, write to the Free Software
20   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21   */
22  
23  package de.bea.domingo.http;
24  
25  import java.io.IOException;
26  
27  import org.apache.commons.httpclient.Header;
28  import org.apache.commons.httpclient.methods.GetMethod;
29  
30  import de.bea.domingo.util.XMLUtil;
31  
32  /***
33   * An Http GET method to a Lotus Domino server.
34   *
35   * @author <a href=mailto:kriede@users.sourceforge.net>Kurt Riede</a>
36   */
37  public final class DominoGetMethod extends GetMethod implements DominoHttpMethod {
38  
39      /***
40       * Private constructor; use {@ink #GetInstance(String)} to create new
41       * instances of this class.
42       *
43       * @param uri the URI of the method
44       */
45      private DominoGetMethod(final String uri) {
46          super(uri);
47      }
48  
49      /***
50       * Returns a new instance of this class.
51       *
52       * @param uri the URI of the method
53       * @return a new instance
54       */
55      static DominoGetMethod getInstance(final String uri) {
56          return new DominoGetMethod(uri);
57      }
58  
59      /***
60       * {@inheritDoc}
61       * @throws IOException if the response cannot be read
62       *
63       * @see de.bea.domingo.http.DominoHttpMethod#getResponseBodyString()
64       */
65      public String getResponseBodyString() throws IOException  {
66          Header contentTypeHeader = getResponseHeader("Content-Type");
67          String contentType = contentTypeHeader == null ? "text/html charset=UTF-8" : contentTypeHeader.getValue();
68          if (contentType.startsWith("text/html")) {
69              return getResponseBodyAsString();
70          }
71          if (contentType.startsWith("text/xml")) {
72              return XMLUtil.parse(getResponseBody());
73          }
74          return getResponseBodyAsString();
75      }
76  }