diff --git a/pom.xml b/pom.xml index 54c06edaa..784d0f192 100644 --- a/pom.xml +++ b/pom.xml @@ -80,6 +80,7 @@ 1.2 2.8 3.4 + 2.4 4.12 1.3 @@ -175,6 +176,12 @@ ${httpcore.version} + + commons-io + commons-io + ${commons-io.version} + + commons-logging commons-logging diff --git a/src/main/java/microsoft/exchange/webservices/data/core/ExchangeServiceBase.java b/src/main/java/microsoft/exchange/webservices/data/core/ExchangeServiceBase.java index befc421f9..bb01858b4 100644 --- a/src/main/java/microsoft/exchange/webservices/data/core/ExchangeServiceBase.java +++ b/src/main/java/microsoft/exchange/webservices/data/core/ExchangeServiceBase.java @@ -56,6 +56,7 @@ import microsoft.exchange.webservices.data.misc.EwsTraceListener; import microsoft.exchange.webservices.data.misc.ITraceListener; +import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.http.client.AuthenticationStrategy; @@ -264,19 +265,8 @@ private void initializeHttpContext() { @Override public void close() { - try { - httpClient.close(); - } catch (IOException e) { - LOG.debug(e); - } - - if (httpPoolingClient != null) { - try { - httpPoolingClient.close(); - } catch (IOException e) { - LOG.debug(e); - } - } + IOUtils.closeQuietly(httpClient); + IOUtils.closeQuietly(httpPoolingClient); } // Event handlers diff --git a/src/main/java/microsoft/exchange/webservices/data/core/request/HangingServiceRequestBase.java b/src/main/java/microsoft/exchange/webservices/data/core/request/HangingServiceRequestBase.java index 4ecc9a92f..04db10e43 100644 --- a/src/main/java/microsoft/exchange/webservices/data/core/request/HangingServiceRequestBase.java +++ b/src/main/java/microsoft/exchange/webservices/data/core/request/HangingServiceRequestBase.java @@ -36,6 +36,7 @@ import microsoft.exchange.webservices.data.core.exception.xml.XmlException; import microsoft.exchange.webservices.data.misc.HangingTraceStream; import microsoft.exchange.webservices.data.security.XmlNodeType; +import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -241,14 +242,7 @@ private void parseResponses() { // Stream is closed, so disconnect. this.disconnect(HangingRequestDisconnectReason.Exception, ex); } finally { - if (responseCopy != null) { - try { - responseCopy.close(); - responseCopy = null; - } catch (Exception ex) { - LOG.error(ex); - } - } + IOUtils.closeQuietly(responseCopy); } } @@ -272,11 +266,7 @@ private void setIsConnected(boolean value) { */ public void disconnect() { synchronized (this) { - try { - this.response.close(); - } catch (IOException e) { - // Ignore exception on disconnection - } + IOUtils.closeQuietly(this.response); this.disconnect(HangingRequestDisconnectReason.UserInitiated, null); } } @@ -289,11 +279,7 @@ public void disconnect() { */ public void disconnect(HangingRequestDisconnectReason reason, Exception exception) { if (this.isConnected()) { - try { - this.response.close(); - } catch (IOException e) { - // Ignore exception on disconnection - } + IOUtils.closeQuietly(this.response); this.internalOnDisconnect(reason, exception); } } diff --git a/src/main/java/microsoft/exchange/webservices/data/core/request/HttpWebRequest.java b/src/main/java/microsoft/exchange/webservices/data/core/request/HttpWebRequest.java index edc2aef10..f8abec964 100644 --- a/src/main/java/microsoft/exchange/webservices/data/core/request/HttpWebRequest.java +++ b/src/main/java/microsoft/exchange/webservices/data/core/request/HttpWebRequest.java @@ -27,6 +27,7 @@ import microsoft.exchange.webservices.data.core.WebProxy; import microsoft.exchange.webservices.data.core.exception.http.EWSHttpException; +import java.io.Closeable; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -36,7 +37,7 @@ /** * The Class HttpWebRequest. */ -public abstract class HttpWebRequest { +public abstract class HttpWebRequest implements Closeable { /** * The url. diff --git a/src/main/java/microsoft/exchange/webservices/data/core/request/ServiceRequestBase.java b/src/main/java/microsoft/exchange/webservices/data/core/request/ServiceRequestBase.java index 073c2c2a1..101d6b104 100644 --- a/src/main/java/microsoft/exchange/webservices/data/core/request/ServiceRequestBase.java +++ b/src/main/java/microsoft/exchange/webservices/data/core/request/ServiceRequestBase.java @@ -46,6 +46,7 @@ import microsoft.exchange.webservices.data.core.exception.xml.XmlException; import microsoft.exchange.webservices.data.misc.SoapFaultDetails; import microsoft.exchange.webservices.data.security.XmlNodeType; +import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -644,12 +645,7 @@ protected HttpWebRequest validateAndEmitRequest() throws Exception { throw new ServiceRequestException(String.format("The request failed. %s", e.getMessage()), e); } } catch (Exception e) { - try { - request.close(); - } catch (Exception e2) { - // Ignore exception while closing the request. - } - + IOUtils.closeQuietly(request); throw e; } } diff --git a/src/main/java/microsoft/exchange/webservices/data/property/complex/FileAttachment.java b/src/main/java/microsoft/exchange/webservices/data/property/complex/FileAttachment.java index 5b6555c50..de3567f36 100644 --- a/src/main/java/microsoft/exchange/webservices/data/property/complex/FileAttachment.java +++ b/src/main/java/microsoft/exchange/webservices/data/property/complex/FileAttachment.java @@ -33,6 +33,8 @@ import microsoft.exchange.webservices.data.core.exception.service.local.ServiceValidationException; import microsoft.exchange.webservices.data.core.exception.service.local.ServiceVersionException; +import org.apache.commons.io.IOUtils; + import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -234,11 +236,7 @@ public void load(String fileName) throws Exception { this.load(); this.loadToStream.flush(); } finally { - try { - this.loadToStream.close(); - } catch(Exception e) { - //ignore exception on close - } + IOUtils.closeQuietly(this.loadToStream); this.loadToStream = null; }