Reverted changes to FileHelper to avoid file-locking Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/de873792 Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/de873792 Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/de873792
Branch: refs/heads/master Commit: de873792c8a209011b1822e0873fc43f6ca2562e Parents: 4feb932 Author: Kasper Sørensen <[email protected]> Authored: Tue Oct 6 15:25:26 2015 +0200 Committer: Kasper Sørensen <[email protected]> Committed: Tue Oct 6 15:25:26 2015 +0200 ---------------------------------------------------------------------- .../org/apache/metamodel/util/FileHelper.java | 44 ++++++++------------ .../apache/metamodel/csv/CsvDataContext.java | 2 + 2 files changed, 19 insertions(+), 27 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/de873792/core/src/main/java/org/apache/metamodel/util/FileHelper.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/metamodel/util/FileHelper.java b/core/src/main/java/org/apache/metamodel/util/FileHelper.java index 0ff06a8..1a6b701 100644 --- a/core/src/main/java/org/apache/metamodel/util/FileHelper.java +++ b/core/src/main/java/org/apache/metamodel/util/FileHelper.java @@ -426,42 +426,32 @@ public final class FileHelper { public static void copy(Resource from, Resource to) throws IllegalStateException { assert from.isExists(); - if (from instanceof FileResource && to instanceof FileResource) { - final File fromFile = ((FileResource) from).getFile(); - final File toFile = ((FileResource) to).getFile(); - copy(fromFile, toFile); - return; - } - - final InputStream fromStream = from.read(); + final InputStream in = from.read(); try { - if (to instanceof FileResource) { - final File toFile = ((FileResource) to).getFile(); - try { - Files.copy(fromStream, toFile.toPath(), StandardCopyOption.REPLACE_EXISTING); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } else { - final OutputStream toStream = to.write(); - try { - copy(fromStream, toStream); - } finally { - safeClose(toStream); - } + final OutputStream out = to.write(); + try { + copy(in, out); + } finally { + safeClose(out); } } finally { - safeClose(fromStream); + safeClose(in); } } public static void copy(File from, File to) throws IllegalStateException { assert from.exists(); - + + final InputStream in = getInputStream(from); try { - Files.copy(from.toPath(), to.toPath(), StandardCopyOption.REPLACE_EXISTING); - } catch (IOException e) { - throw new IllegalStateException(e); + final OutputStream out = getOutputStream(to); + try { + copy(in, out); + } finally { + safeClose(out); + } + } finally { + safeClose(in); } } http://git-wip-us.apache.org/repos/asf/metamodel/blob/de873792/csv/src/main/java/org/apache/metamodel/csv/CsvDataContext.java ---------------------------------------------------------------------- diff --git a/csv/src/main/java/org/apache/metamodel/csv/CsvDataContext.java b/csv/src/main/java/org/apache/metamodel/csv/CsvDataContext.java index 8c23b7a..3787453 100644 --- a/csv/src/main/java/org/apache/metamodel/csv/CsvDataContext.java +++ b/csv/src/main/java/org/apache/metamodel/csv/CsvDataContext.java @@ -360,10 +360,12 @@ public final class CsvDataContext extends QueryPostprocessDataContext implements for (int i = 0; i < lineNumber; i++) { String line = reader.readLine(); if (line == null) { + FileHelper.safeClose(reader); return new EmptyDataSet(columns); } } } catch (IOException e) { + FileHelper.safeClose(reader); throw new MetaModelException("IOException occurred while reading from CSV resource: " + _resource, e); }
