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;
}