From: <rm...@hy...> - 2008-11-30 23:46:58
|
Author: rmorgan Date: 2008-11-30 15:46:55 -0800 (Sun, 30 Nov 2008) New Revision: 337 URL: http://svn.hyperic.org/?view=rev&root=HQApi&revision=337 Modified: trunk/src/org/hyperic/hq/hqapi1/HQConnection.java Log: Clean up HTTP method execution. Release connection once the request has been parsed. Modified: trunk/src/org/hyperic/hq/hqapi1/HQConnection.java =================================================================== --- trunk/src/org/hyperic/hq/hqapi1/HQConnection.java 2008-11-30 23:40:27 UTC (rev 336) +++ trunk/src/org/hyperic/hq/hqapi1/HQConnection.java 2008-11-30 23:46:55 UTC (rev 337) @@ -58,16 +58,6 @@ } } - private HttpClient getHttpClient() { - HttpClient client = new HttpClient(); - - client.getParams().setAuthenticationPreemptive(true); - Credentials defaultcreds = new UsernamePasswordCredentials(_user, - _password); - client.getState().setCredentials(AuthScope.ANY, defaultcreds); - return client; - } - /** * Generate an response object with the given Error. In some cases the * HQ server will not give us a result, so we generate one ourselves. @@ -216,40 +206,48 @@ URL url = new URL(protocol, _host, _port, uri); method.setURI(new URI(url.toString(), true)); - int code; try { - code = getHttpClient().executeMethod(method); + HttpClient client = new HttpClient(); + + client.getParams().setAuthenticationPreemptive(true); + Credentials defaultcreds = new UsernamePasswordCredentials(_user, + _password); + client.getState().setCredentials(AuthScope.ANY, defaultcreds); + + ServiceError error; + switch (client.executeMethod(method)) { + case 200: + // We only deal with HTTP_OK responses + InputStream is = method.getResponseBodyAsStream(); + try { + return deserialize(resultClass, is); + } catch (JAXBException e) { + error = new ServiceError(); + error.setErrorCode("UnexpectedError"); + error.setReasonText("Unable to deserialize result"); + if (_log.isDebugEnabled()) { + _log.debug("Unable to deserialize result", e); + } + return getErrorResponse(resultClass, error); + } + case 401: + // Unauthorized + error = new ServiceError(); + error.setErrorCode("LoginFailure"); + error.setReasonText("The given username and password could " + + "not be validated"); + return getErrorResponse(resultClass, error); + default: + // Some other server blow up. + error = new ServiceError(); + error.setErrorCode("UnexpectedError"); + error.setReasonText("An unexpected error occured"); + return getErrorResponse(resultClass, error); + } } catch (SocketException e) { throw new HttpException("Error issuing request", e); + } finally { + method.releaseConnection(); } - - if (code == 200) { - // We only deal with HTTP_OK responses - InputStream is = method.getResponseBodyAsStream(); - try { - return deserialize(resultClass, is); - } catch (JAXBException e) { - ServiceError error = new ServiceError(); - error.setErrorCode("UnexpectedError"); - error.setReasonText("Unable to deserialize result"); - if (_log.isDebugEnabled()) { - _log.debug("Unable to deserialize result", e); - } - return getErrorResponse(resultClass, error); - } - } else if (code == 401) { - // Unauthorized - ServiceError error = new ServiceError(); - error.setErrorCode("LoginFailure"); - error.setReasonText("The given username and password could " + - "not be validated"); - return getErrorResponse(resultClass, error); - } else { - // Some other server blow up. - ServiceError error = new ServiceError(); - error.setErrorCode("UnexpectedError"); - error.setReasonText("An unexpected error occured"); - return getErrorResponse(resultClass, error); - } } } |