From 117b29439e5d46418f9a9a8f8127cee8a1d34fb6 Mon Sep 17 00:00:00 2001 From: Mark Rogers Date: Fri, 9 Dec 2011 11:01:33 +0000 Subject: [PATCH] Rework file close. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@32662 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../filesys/repo/CIFSContentComparator.java | 64 +++++++++++++------ 1 file changed, 45 insertions(+), 19 deletions(-) diff --git a/source/java/org/alfresco/filesys/repo/CIFSContentComparator.java b/source/java/org/alfresco/filesys/repo/CIFSContentComparator.java index 560f2ef36a..62415dfe4f 100644 --- a/source/java/org/alfresco/filesys/repo/CIFSContentComparator.java +++ b/source/java/org/alfresco/filesys/repo/CIFSContentComparator.java @@ -69,11 +69,15 @@ public class CIFSContentComparator implements ContentComparator return false; } + InputStream rightIs = null; + InputStream leftIs = null; try { - InputStream rightIs = new BufferedInputStream(new FileInputStream(newFile)); - InputStream leftIs = existingContent.getContentInputStream(); + rightIs = new BufferedInputStream(new FileInputStream(newFile)); + leftIs = existingContent.getContentInputStream(); boolean retVal = EqualsHelper.binaryStreamEquals(leftIs, rightIs); + rightIs = null; + leftIs = null; if(logger.isDebugEnabled()) { @@ -83,9 +87,35 @@ public class CIFSContentComparator implements ContentComparator } catch (IOException e) { + logger.debug("Unable to compare contents", e); return false; - } + } + finally + { + if(leftIs != null) + { + try + { + leftIs.close(); + } + catch (IOException e) + { + // Do nothing this is cleanup code + } + } + if(rightIs != null) + { + try + { + rightIs.close(); + } + catch (IOException e) + { + // Do nothing this is cleanup code + } + } + } } else { @@ -109,18 +139,17 @@ public class CIFSContentComparator implements ContentComparator logger.debug("comparing two project files size:" + existingContent.getSize() + ", and " + newFile.length()); } -// if(existingContent.getSize() != newSize) -// { -// logger.debug("project files are different size"); -// // Different size -// return false; -// } + if(existingContent.getSize() != newSize) + { + logger.debug("project files are different size"); + // Different size + return false; + } - ArrayList openStreams = new ArrayList(); - /** * Use POI to compare the content of the MPP file, exluding certain properties */ + InputStream leftIs = null; try { Collection excludes = new HashSet(); @@ -128,11 +157,8 @@ public class CIFSContentComparator implements ContentComparator excludes.add("Props12"); excludes.add("Props9"); - InputStream leftIs = existingContent.getContentInputStream(); - openStreams.add(leftIs); - NPOIFSFileSystem fs2 = new NPOIFSFileSystem(leftIs); - openStreams.remove(0); - + leftIs = existingContent.getContentInputStream(); + NPOIFSFileSystem fs2 = new NPOIFSFileSystem(leftIs); NPOIFSFileSystem fs1 = new NPOIFSFileSystem(newFile); DirectoryEntry de1 = fs1.getRoot(); @@ -161,15 +187,15 @@ public class CIFSContentComparator implements ContentComparator } finally { - for(InputStream stream : openStreams) + if(leftIs != null) { try { - stream.close(); + leftIs.close(); } catch (IOException e) { - // Do nothing + // Ignore } } }