Skip to content
Snippets Groups Projects
Commit 46063a74 authored by kaloyane's avatar kaloyane
Browse files

bugfix: close flex files after reading the metadata

SVN: 23448
parent 1c94ef78
No related branches found
No related tags found
No related merge requests found
...@@ -28,9 +28,11 @@ import javax.xml.xpath.XPathConstants; ...@@ -28,9 +28,11 @@ import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression; import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory; import javax.xml.xpath.XPathFactory;
import loci.common.RandomAccessInputStream;
import loci.formats.tiff.IFDList; import loci.formats.tiff.IFDList;
import loci.formats.tiff.TiffParser; import loci.formats.tiff.TiffParser;
import org.apache.commons.io.IOUtils;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.NodeList; import org.w3c.dom.NodeList;
import org.xml.sax.InputSource; import org.xml.sax.InputSource;
...@@ -63,15 +65,15 @@ public class FlexHelper ...@@ -63,15 +65,15 @@ public class FlexHelper
private static final String SELECT_TILE_YCOORDS = "//Sublayouts/Sublayout/Field/OffsetY/text()"; private static final String SELECT_TILE_YCOORDS = "//Sublayouts/Sublayout/Field/OffsetY/text()";
private final String fileName; private final String file;
private final String metadataXML; private final String metadataXML;
private final Document metadata; private final Document metadata;
public FlexHelper(String fileName) public FlexHelper(String file)
{ {
this.fileName = fileName; this.file = file;
try try
{ {
this.metadataXML = readMetadata(); this.metadataXML = readMetadata();
...@@ -157,15 +159,22 @@ public class FlexHelper ...@@ -157,15 +159,22 @@ public class FlexHelper
private String readMetadata() throws Exception private String readMetadata() throws Exception
{ {
TiffParser tiffParser = new TiffParser(fileName); RandomAccessInputStream in = new RandomAccessInputStream(file);
final IFDList ifds = tiffParser.getIFDs(); try
if (ifds != null && ifds.get(0) != null)
{ {
return ifds.get(0).getIFDStringValue(FLEX); TiffParser tiffParser = new TiffParser(in);
} else final IFDList ifds = tiffParser.getIFDs();
if (ifds != null && ifds.get(0) != null)
{
return ifds.get(0).getIFDStringValue(FLEX);
} else
{
throw new IllegalArgumentException("Cannot parse Flex XML metadata from file "
+ file);
}
} finally
{ {
throw new IllegalArgumentException("Cannot parse Flex XML metadata from file " IOUtils.closeQuietly(in);
+ fileName);
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment