Author: tilman
Date: Sat Nov  1 13:24:10 2025
New Revision: 1929456

Log:
PDFBOX-5660: close input, as suggested by Valery Bokov; closes #305

Modified:
   
pdfbox/branches/3.0/xmpbox/src/test/java/org/apache/xmpbox/parser/DeserializationTest.java

Modified: 
pdfbox/branches/3.0/xmpbox/src/test/java/org/apache/xmpbox/parser/DeserializationTest.java
==============================================================================
--- 
pdfbox/branches/3.0/xmpbox/src/test/java/org/apache/xmpbox/parser/DeserializationTest.java
  Sat Nov  1 12:45:02 2025        (r1929455)
+++ 
pdfbox/branches/3.0/xmpbox/src/test/java/org/apache/xmpbox/parser/DeserializationTest.java
  Sat Nov  1 13:24:10 2025        (r1929456)
@@ -88,98 +88,108 @@ class DeserializationTest
     }
 
     @Test
-    void testStructuredRecursive() throws XmpParsingException, 
TransformerException, NoSuchAlgorithmException, UnsupportedEncodingException
+    void testStructuredRecursive() throws XmpParsingException, 
TransformerException, NoSuchAlgorithmException, UnsupportedEncodingException, 
IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/org/apache/xmpbox/parser/structured_recursive.xml");
-        XMPMetadata metadata = xdb.parse(fis);
-        checkTransform(metadata, 
"50429052370059903229869639943824137435756655804864824611365505219590816799783");
+        try (InputStream is = 
DomXmpParser.class.getResourceAsStream("/org/apache/xmpbox/parser/structured_recursive.xml"))
+        {
+            XMPMetadata metadata = xdb.parse(is);
+            checkTransform(metadata, 
"50429052370059903229869639943824137435756655804864824611365505219590816799783");
+        }
     }
 
     @Test
-    void testEmptyLi() throws XmpParsingException, TransformerException, 
NoSuchAlgorithmException, UnsupportedEncodingException
+    void testEmptyLi() throws XmpParsingException, TransformerException, 
NoSuchAlgorithmException, UnsupportedEncodingException, IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/org/apache/xmpbox/parser/empty_list.xml");
-        XMPMetadata metadata = xdb.parse(fis);
-        checkTransform(metadata, 
"92757984740574362800045336947395134346147179161385043989715484359442690118913");
+        try (InputStream is = 
DomXmpParser.class.getResourceAsStream("/org/apache/xmpbox/parser/empty_list.xml"))
+        {
+            XMPMetadata metadata = xdb.parse(is);
+            checkTransform(metadata, 
"92757984740574362800045336947395134346147179161385043989715484359442690118913");
+        }
     }
 
     @Test
-    void testEmptyLi2() throws XmpParsingException, TransformerException, 
NoSuchAlgorithmException, UnsupportedEncodingException
+    void testEmptyLi2() throws XmpParsingException, TransformerException, 
NoSuchAlgorithmException, UnsupportedEncodingException, IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/validxmp/emptyli.xml");
-        XMPMetadata metadata = xdb.parse(fis);
-        DublinCoreSchema dc = metadata.getDublinCoreSchema();
-        dc.getCreatorsProperty();
-        checkTransform(metadata, 
"84846877440303452108560435796840772468446174326989274262473618453524301429629");
+        try (InputStream is = 
DomXmpParser.class.getResourceAsStream("/validxmp/emptyli.xml"))
+        {
+            XMPMetadata metadata = xdb.parse(is);
+            DublinCoreSchema dc = metadata.getDublinCoreSchema();
+            dc.getCreatorsProperty();
+            checkTransform(metadata, 
"84846877440303452108560435796840772468446174326989274262473618453524301429629");
+        }
     }
 
     @Test
-    void testGetTitle() throws XmpParsingException, BadFieldValueException
+    void testGetTitle() throws XmpParsingException, BadFieldValueException, 
IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/validxmp/emptyli.xml");
-        XMPMetadata metadata = xdb.parse(fis);
-        DublinCoreSchema dc = metadata.getDublinCoreSchema();
-        String s = dc.getTitle(null);
-        assertEquals("title value", s);
+        try (InputStream is = 
DomXmpParser.class.getResourceAsStream("/validxmp/emptyli.xml"))
+        {
+            XMPMetadata metadata = xdb.parse(is);
+            DublinCoreSchema dc = metadata.getDublinCoreSchema();
+            String s = dc.getTitle(null);
+            assertEquals("title value", s);
+        }
     }
 
     @Test
-    void testAltBagSeq() throws XmpParsingException, TransformerException, 
NoSuchAlgorithmException, UnsupportedEncodingException
+    void testAltBagSeq() throws XmpParsingException, TransformerException, 
NoSuchAlgorithmException, UnsupportedEncodingException, IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/org/apache/xmpbox/parser/AltBagSeqTest.xml");
-        XMPMetadata metadata=xdb.parse(fis);
-        checkTransform(metadata, 
"16805992283807186369849610414335227396239089071611806706387795179375897398118");
+        try (InputStream is = 
DomXmpParser.class.getResourceAsStream("/org/apache/xmpbox/parser/AltBagSeqTest.xml"))
+        {
+            XMPMetadata metadata=xdb.parse(is);
+            checkTransform(metadata, 
"16805992283807186369849610414335227396239089071611806706387795179375897398118");
+        }
     }
 
     @Test
     void testIsartorStyleWithThumbs()
             throws XmpParsingException, IOException, BadFieldValueException, 
TransformerException, NoSuchAlgorithmException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/org/apache/xmpbox/parser/ThumbisartorStyle.xml");
-
-        XMPMetadata metadata = xdb.parse(fis);
-
-        // <xmpMM:DocumentID>
-        assertEquals("uuid:09C78666-2F91-3A9C-92AF-3691A6D594F7", 
metadata.getXMPMediaManagementSchema()
-                .getDocumentID());
-
-        // <xmp:CreateDate>
-        // <xmp:ModifyDate>
-        // <xmp:MetadataDate>
-        assertEquals(DateConverter.toCalendar("2008-01-18T16:59:54+01:00"), 
metadata.getXMPBasicSchema()
-                .getCreateDate());
-        assertEquals(DateConverter.toCalendar("2008-01-18T16:59:54+01:00"), 
metadata.getXMPBasicSchema()
-                .getModifyDate());
-        assertEquals(DateConverter.toCalendar("2008-01-18T16:59:54+01:00"), 
metadata.getXMPBasicSchema()
-                .getMetadataDate());
-
-        // THUMBNAILS TEST
-        List<ThumbnailType> thumbs = 
metadata.getXMPBasicSchema().getThumbnailsProperty();
-        assertNotNull(thumbs);
-        assertEquals(2, thumbs.size());
-
-        ThumbnailType thumb = thumbs.get(0);
-        assertEquals(Integer.valueOf(162), thumb.getHeight());
-        assertEquals(Integer.valueOf(216), thumb.getWidth());
-        assertEquals("JPEG", thumb.getFormat());
-        assertEquals("/9j/4AAQSkZJRgABAgEASABIAAD", thumb.getImage());
-
-        thumb = thumbs.get(1);
-        assertEquals(Integer.valueOf(162), thumb.getHeight());
-        assertEquals(Integer.valueOf(216), thumb.getWidth());
-        assertEquals("JPEG", thumb.getFormat());
-        assertEquals("/9j/4AAQSkZJRgABAgEASABIAAD", thumb.getImage());
-
-        checkTransform(metadata, 
"29120813843205587378639665706339183422557956085575883885304382528664692315203");
+        try (InputStream is = 
DomXmpParser.class.getResourceAsStream("/org/apache/xmpbox/parser/ThumbisartorStyle.xml"))
+        {
+            XMPMetadata metadata = xdb.parse(is);
+            
+            // <xmpMM:DocumentID>
+            assertEquals("uuid:09C78666-2F91-3A9C-92AF-3691A6D594F7", 
metadata.getXMPMediaManagementSchema()
+                    .getDocumentID());
+            
+            // <xmp:CreateDate>
+            // <xmp:ModifyDate>
+            // <xmp:MetadataDate>
+            
assertEquals(DateConverter.toCalendar("2008-01-18T16:59:54+01:00"), 
metadata.getXMPBasicSchema()
+                    .getCreateDate());
+            
assertEquals(DateConverter.toCalendar("2008-01-18T16:59:54+01:00"), 
metadata.getXMPBasicSchema()
+                    .getModifyDate());
+            
assertEquals(DateConverter.toCalendar("2008-01-18T16:59:54+01:00"), 
metadata.getXMPBasicSchema()
+                    .getMetadataDate());
+            
+            // THUMBNAILS TEST
+            List<ThumbnailType> thumbs = 
metadata.getXMPBasicSchema().getThumbnailsProperty();
+            assertNotNull(thumbs);
+            assertEquals(2, thumbs.size());
+            
+            ThumbnailType thumb = thumbs.get(0);
+            assertEquals(Integer.valueOf(162), thumb.getHeight());
+            assertEquals(Integer.valueOf(216), thumb.getWidth());
+            assertEquals("JPEG", thumb.getFormat());
+            assertEquals("/9j/4AAQSkZJRgABAgEASABIAAD", thumb.getImage());
+            
+            thumb = thumbs.get(1);
+            assertEquals(Integer.valueOf(162), thumb.getHeight());
+            assertEquals(Integer.valueOf(216), thumb.getWidth());
+            assertEquals("JPEG", thumb.getFormat());
+            assertEquals("/9j/4AAQSkZJRgABAgEASABIAAD", thumb.getImage());
+            
+            checkTransform(metadata, 
"29120813843205587378639665706339183422557956085575883885304382528664692315203");
+        }
     }
 
     @Test
-    void testWithNoXPacketStart() throws XmpParsingException
+    void testWithNoXPacketStart() throws XmpParsingException, IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/noxpacket.xml");
-        try
+        try (InputStream is = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/noxpacket.xml"))
         {
-            xdb.parse(fis);
+            xdb.parse(is);
             fail("Should fail during parse");
         }
         catch (XmpParsingException e)
@@ -189,12 +199,11 @@ class DeserializationTest
     }
 
     @Test
-    void testWithNoXPacketEnd() throws XmpParsingException
+    void testWithNoXPacketEnd() throws XmpParsingException, IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/noxpacketend.xml");
-        try
+        try (InputStream is = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/noxpacketend.xml"))
         {
-            xdb.parse(fis);
+            xdb.parse(is);
             fail("Should fail during parse");
         }
         catch (XmpParsingException e)
@@ -204,12 +213,11 @@ class DeserializationTest
     }
 
     @Test
-    void testWithNoRDFElement() throws XmpParsingException
+    void testWithNoRDFElement() throws XmpParsingException, IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/noroot.xml");
-        try
+        try (InputStream is = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/noroot.xml"))
         {
-            xdb.parse(fis);
+            xdb.parse(is);
             fail("Should fail during parse");
         }
         catch (XmpParsingException e)
@@ -219,12 +227,11 @@ class DeserializationTest
     }
 
     @Test
-    void testWithTwoRDFElement() throws XmpParsingException
+    void testWithTwoRDFElement() throws XmpParsingException, IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/tworoot.xml");
-        try
+        try (InputStream is = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/tworoot.xml"))
         {
-            xdb.parse(fis);
+            xdb.parse(is);
             fail("Should fail during parse");
         }
         catch (XmpParsingException e)
@@ -234,12 +241,11 @@ class DeserializationTest
     }
 
     @Test
-    void testWithInvalidRDFElementPrefix()
+    void testWithInvalidRDFElementPrefix() throws IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/invalidroot2.xml");
-        try
+        try (InputStream is = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/invalidroot2.xml"))
         {
-            xdb.parse(fis);
+            xdb.parse(is);
             fail("Should fail during parse");
         }
         catch (XmpParsingException e)
@@ -249,12 +255,11 @@ class DeserializationTest
     }
 
     @Test
-    void testWithRDFRootAsText()
+    void testWithRDFRootAsText() throws IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/invalidroot.xml");
-        try
+        try (InputStream is = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/invalidroot.xml"))
         {
-            xdb.parse(fis);
+            xdb.parse(is);
             fail("Should fail during parse");
         }
         catch (XmpParsingException e)
@@ -264,12 +269,11 @@ class DeserializationTest
     }
 
     @Test
-    void testUndefinedSchema()
+    void testUndefinedSchema() throws IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/undefinedschema.xml");
-        try
+        try (InputStream is = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/undefinedschema.xml"))
         {
-            xdb.parse(fis);
+            xdb.parse(is);
             fail("Should fail during parse");
         }
         catch (XmpParsingException e)
@@ -279,12 +283,11 @@ class DeserializationTest
     }
 
     @Test
-    void testUndefinedPropertyWithDefinedSchema()
+    void testUndefinedPropertyWithDefinedSchema() throws IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/undefinedpropertyindefinedschema.xml");
-        try
+        try (InputStream is = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/undefinedpropertyindefinedschema.xml"))
         {
-            xdb.parse(fis);
+            xdb.parse(is);
             fail("Should fail during parse");
         }
         catch (XmpParsingException e)
@@ -294,12 +297,11 @@ class DeserializationTest
     }
 
     @Test
-    void testUndefinedStructuredWithDefinedSchema()
+    void testUndefinedStructuredWithDefinedSchema() throws IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/undefinedstructuredindefinedschema.xml");
-        try
+        try (InputStream is = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/undefinedstructuredindefinedschema.xml"))
         {
-            xdb.parse(fis);
+            xdb.parse(is);
             fail("Should fail during parse");
         }
         catch (XmpParsingException e)
@@ -309,48 +311,54 @@ class DeserializationTest
     }
 
     @Test
-    void testRdfAboutFound() throws XmpParsingException
+    void testRdfAboutFound() throws XmpParsingException, IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/validxmp/emptyli.xml");
-        XMPMetadata metadata = xdb.parse(fis);
-        List<XMPSchema> schemas = metadata.getAllSchemas();
-        for (XMPSchema xmpSchema : schemas)
+        try (InputStream is = 
DomXmpParser.class.getResourceAsStream("/validxmp/emptyli.xml"))
         {
-            assertNotNull(xmpSchema.getAboutAttribute());
+            XMPMetadata metadata = xdb.parse(is);
+            List<XMPSchema> schemas = metadata.getAllSchemas();
+            for (XMPSchema xmpSchema : schemas)
+            {
+                assertNotNull(xmpSchema.getAboutAttribute());
+            }
         }
     }
 
     @Test
-    void testWihtAttributesAsProperties() throws XmpParsingException, 
TransformerException, NoSuchAlgorithmException, UnsupportedEncodingException
+    void testWihtAttributesAsProperties() throws XmpParsingException, 
TransformerException, NoSuchAlgorithmException, UnsupportedEncodingException, 
IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/validxmp/attr_as_props.xml");
-        XMPMetadata metadata = xdb.parse(fis);
-
-        AdobePDFSchema pdf = metadata.getAdobePDFSchema();
-        assertEquals("GPL Ghostscript 8.64", pdf.getProducer());
-
-        DublinCoreSchema dc = metadata.getDublinCoreSchema();
-        assertEquals("application/pdf", dc.getFormat());
-
-        XMPBasicSchema basic = metadata.getXMPBasicSchema();
-        assertNotNull(basic.getCreateDate());
-        
-        checkTransform(metadata, 
"91466370449938102905842936306160100538543510664071400903097987792216034311743");
+        try (InputStream is = 
DomXmpParser.class.getResourceAsStream("/validxmp/attr_as_props.xml"))
+        {
+            XMPMetadata metadata = xdb.parse(is);
+            
+            AdobePDFSchema pdf = metadata.getAdobePDFSchema();
+            assertEquals("GPL Ghostscript 8.64", pdf.getProducer());
+            
+            DublinCoreSchema dc = metadata.getDublinCoreSchema();
+            assertEquals("application/pdf", dc.getFormat());
+            
+            XMPBasicSchema basic = metadata.getXMPBasicSchema();
+            assertNotNull(basic.getCreateDate());
+            
+            checkTransform(metadata, 
"91466370449938102905842936306160100538543510664071400903097987792216034311743");
+        }
     }
 
     @Test
-    void testSpaceTextValues() throws XmpParsingException, 
TransformerException, NoSuchAlgorithmException, UnsupportedEncodingException
+    void testSpaceTextValues() throws XmpParsingException, 
TransformerException, NoSuchAlgorithmException, UnsupportedEncodingException, 
IOException
     {
         // check values with spaces at start or end
         // in this case, the value should not be trimmed
-        InputStream is = 
DomXmpParser.class.getResourceAsStream("/validxmp/only_space_fields.xmp");
-        XMPMetadata metadata = xdb.parse(is);
-        // check producer
-        assertEquals(" ", metadata.getAdobePDFSchema().getProducer());
-        // check creator tool
-        assertEquals("Canon ",metadata.getXMPBasicSchema().getCreatorTool());
-        
-        checkTransform(metadata, 
"65475542891943378255730260794798768587695617138297196920293698476028940113080");
+        try (InputStream is = 
DomXmpParser.class.getResourceAsStream("/validxmp/only_space_fields.xmp"))
+        {
+            XMPMetadata metadata = xdb.parse(is);
+            // check producer
+            assertEquals(" ", metadata.getAdobePDFSchema().getProducer());
+            // check creator tool
+            assertEquals("Canon 
",metadata.getXMPBasicSchema().getCreatorTool());
+            
+            checkTransform(metadata, 
"65475542891943378255730260794798768587695617138297196920293698476028940113080");
+        }
     }
 
     @Test

Reply via email to