diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/AbstractDataSetPackager.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/AbstractDataSetPackager.java index b7c207ee725a4d6a7d9a87f370042a0dd02bc1d2..69ac020c484965db2f913f3a1aa7385e1ae3c6a9 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/AbstractDataSetPackager.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/AbstractDataSetPackager.java @@ -130,6 +130,10 @@ public abstract class AbstractDataSetPackager { return; } + if (file.exists() == false) + { + throw new IllegalStateException("File '" + file + "' doesn't exist."); + } String entryPath = newRootPath + node.getRelativePath(); if (node.isDirectory() && file.isDirectory()) { @@ -144,28 +148,10 @@ public abstract class AbstractDataSetPackager addTo(newRootPath, childNode); } } - } else + } else if (file.isFile()) { long size = file.length(); - long checksum = 0; - if (isChecksumNeeded()) - { - boolean checksumCRC32Precalculated = node.isChecksumCRC32Precalculated(); - if (checksumCRC32Precalculated) - { - checksum = node.getChecksumCRC32(); - } else - { - try - { - FileInputStream fileInputStream = new FileInputStream(file); - checksum = IOUtilities.getChecksumCRC32(new BufferedInputStream(fileInputStream)); - } catch (Exception ex) - { - throw CheckedExceptionTunnel.wrapIfNecessary(ex); - } - } - } + long checksum = calculateChecksum(node, file); try { FileInputStream fileInputStream = new FileInputStream(file); @@ -174,6 +160,33 @@ public abstract class AbstractDataSetPackager { throw CheckedExceptionTunnel.wrapIfNecessary(ex); } + } else + { + throw new IllegalStateException("Node '" + node.getRelativePath() + "' is a real folder"); + } + } + + private long calculateChecksum(IHierarchicalContentNode node, File file) + { + long checksum = 0; + if (isChecksumNeeded()) + { + boolean checksumCRC32Precalculated = node.isChecksumCRC32Precalculated(); + if (checksumCRC32Precalculated) + { + checksum = node.getChecksumCRC32(); + } else + { + try + { + FileInputStream fileInputStream = new FileInputStream(file); + checksum = IOUtilities.getChecksumCRC32(new BufferedInputStream(fileInputStream)); + } catch (Exception ex) + { + throw CheckedExceptionTunnel.wrapIfNecessary(ex); + } + } } + return checksum; } }