Author: tilman
Date: Sat Nov  1 13:24:14 2025
New Revision: 1929457

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

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

Modified: 
pdfbox/branches/2.0/xmpbox/src/test/java/org/apache/xmpbox/parser/DeserializationTest.java
==============================================================================
--- 
pdfbox/branches/2.0/xmpbox/src/test/java/org/apache/xmpbox/parser/DeserializationTest.java
  Sat Nov  1 13:24:10 2025        (r1929456)
+++ 
pdfbox/branches/2.0/xmpbox/src/test/java/org/apache/xmpbox/parser/DeserializationTest.java
  Sat Nov  1 13:24:14 2025        (r1929457)
@@ -86,56 +86,61 @@ public class DeserializationTest
     }
 
     @Test
-    public void testStructuredRecursive() throws XmpParsingException, 
TransformerException, NoSuchAlgorithmException, UnsupportedEncodingException
+    public 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);
+        InputStream is = 
DomXmpParser.class.getResourceAsStream("/org/apache/xmpbox/parser/structured_recursive.xml");
+        XMPMetadata metadata = xdb.parse(is);
         checkTransform(metadata, 
"50429052370059903229869639943824137435756655804864824611365505219590816799783");
+        is.close();
     }
 
     @Test
-    public void testEmptyLi() throws XmpParsingException, 
TransformerException, NoSuchAlgorithmException, UnsupportedEncodingException
+    public 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);
+        InputStream is = 
DomXmpParser.class.getResourceAsStream("/org/apache/xmpbox/parser/empty_list.xml");
+        XMPMetadata metadata = xdb.parse(is);
         checkTransform(metadata, 
"92757984740574362800045336947395134346147179161385043989715484359442690118913");
+        is.close();
     }
 
     @Test
-    public void testEmptyLi2() throws XmpParsingException, 
TransformerException, NoSuchAlgorithmException, UnsupportedEncodingException
+    public void testEmptyLi2() throws XmpParsingException, 
TransformerException, NoSuchAlgorithmException, UnsupportedEncodingException, 
IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/validxmp/emptyli.xml");
-        XMPMetadata metadata = xdb.parse(fis);
+        InputStream is = 
DomXmpParser.class.getResourceAsStream("/validxmp/emptyli.xml");
+        XMPMetadata metadata = xdb.parse(is);
         DublinCoreSchema dc = metadata.getDublinCoreSchema();
         dc.getCreatorsProperty();
         checkTransform(metadata, 
"84846877440303452108560435796840772468446174326989274262473618453524301429629");
+        is.close();
     }
 
     @Test
-    public void testGetTitle() throws XmpParsingException, 
BadFieldValueException
+    public void testGetTitle() throws XmpParsingException, 
BadFieldValueException, IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/validxmp/emptyli.xml");
-        XMPMetadata metadata = xdb.parse(fis);
+        InputStream is = 
DomXmpParser.class.getResourceAsStream("/validxmp/emptyli.xml");
+        XMPMetadata metadata = xdb.parse(is);
         DublinCoreSchema dc = metadata.getDublinCoreSchema();
         String s = dc.getTitle(null);
         Assert.assertEquals("title value", s);
+        is.close();
     }
 
     @Test
-    public void testAltBagSeq() throws XmpParsingException, 
TransformerException, NoSuchAlgorithmException, UnsupportedEncodingException
+    public void testAltBagSeq() throws XmpParsingException, 
TransformerException, NoSuchAlgorithmException, UnsupportedEncodingException, 
IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/org/apache/xmpbox/parser/AltBagSeqTest.xml");
-        XMPMetadata metadata=xdb.parse(fis);
+        InputStream is = 
DomXmpParser.class.getResourceAsStream("/org/apache/xmpbox/parser/AltBagSeqTest.xml");
+        XMPMetadata metadata=xdb.parse(is);
         checkTransform(metadata, 
"16805992283807186369849610414335227396239089071611806706387795179375897398118");
+        is.close();
     }
 
     @Test
     public void testIsartorStyleWithThumbs()
             throws XmpParsingException, IOException, BadFieldValueException, 
TransformerException, NoSuchAlgorithmException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/org/apache/xmpbox/parser/ThumbisartorStyle.xml");
+        InputStream is = 
DomXmpParser.class.getResourceAsStream("/org/apache/xmpbox/parser/ThumbisartorStyle.xml");
 
-        XMPMetadata metadata = xdb.parse(fis);
+        XMPMetadata metadata = xdb.parse(is);
 
         // <xmpMM:DocumentID>
         Assert.assertEquals("uuid:09C78666-2F91-3A9C-92AF-3691A6D594F7", 
metadata.getXMPMediaManagementSchema()
@@ -169,15 +174,16 @@ public class DeserializationTest
         Assert.assertEquals("/9j/4AAQSkZJRgABAgEASABIAAD", thumb.getImage());
 
         checkTransform(metadata, 
"29120813843205587378639665706339183422557956085575883885304382528664692315203");
+        is.close();
     }
 
     @Test
     public void testWithNoXPacketStart() throws XmpParsingException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/noxpacket.xml");
+        InputStream is = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/noxpacket.xml");
         try
         {
-            xdb.parse(fis);
+            xdb.parse(is);
             fail("Should fail during parse");
         }
         catch (XmpParsingException e)
@@ -187,142 +193,175 @@ public class DeserializationTest
     }
 
     @Test
-    public void testWithNoXPacketEnd() throws XmpParsingException
+    public void testWithNoXPacketEnd() throws XmpParsingException, IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/noxpacketend.xml");
+        InputStream is = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/noxpacketend.xml");
         try
         {
-            xdb.parse(fis);
+            xdb.parse(is);
             fail("Should fail during parse");
         }
         catch (XmpParsingException e)
         {
             Assert.assertEquals(ErrorType.XpacketBadEnd, e.getErrorType());
         }
+        finally
+        {
+            is.close();
+        }
     }
 
     @Test
-    public void testWithNoRDFElement() throws XmpParsingException
+    public void testWithNoRDFElement() throws XmpParsingException, IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/noroot.xml");
+        InputStream is = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/noroot.xml");
         try
         {
-            xdb.parse(fis);
+            xdb.parse(is);
             fail("Should fail during parse");
         }
         catch (XmpParsingException e)
         {
             Assert.assertEquals(ErrorType.Format, e.getErrorType());
         }
+        finally
+        {
+            is.close();
+        }
     }
 
     @Test
-    public void testWithTwoRDFElement() throws XmpParsingException
+    public void testWithTwoRDFElement() throws XmpParsingException, IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/tworoot.xml");
+        InputStream is = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/tworoot.xml");
         try
         {
-            xdb.parse(fis);
+            xdb.parse(is);
             fail("Should fail during parse");
         }
         catch (XmpParsingException e)
         {
             Assert.assertEquals(ErrorType.Format, e.getErrorType());
         }
+        finally
+        {
+            is.close();
+        }
     }
 
     @Test
-    public void testWithInvalidRDFElementPrefix()
+    public void testWithInvalidRDFElementPrefix() throws IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/invalidroot2.xml");
+        InputStream is = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/invalidroot2.xml");
         try
         {
-            xdb.parse(fis);
+            xdb.parse(is);
             fail("Should fail during parse");
         }
         catch (XmpParsingException e)
         {
             Assert.assertEquals(ErrorType.Format, e.getErrorType());
         }
+        finally
+        {
+            is.close();
+        }
     }
 
     @Test
-    public void testWithRDFRootAsText()
+    public void testWithRDFRootAsText() throws IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/invalidroot.xml");
+        InputStream is = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/invalidroot.xml");
         try
         {
-            xdb.parse(fis);
+            xdb.parse(is);
             fail("Should fail during parse");
         }
         catch (XmpParsingException e)
         {
             Assert.assertEquals(ErrorType.Format, e.getErrorType());
         }
+        finally
+        {
+            is.close();
+        }
     }
 
     @Test
-    public void testUndefinedSchema()
+    public void testUndefinedSchema() throws IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/undefinedschema.xml");
+        InputStream is = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/undefinedschema.xml");
         try
         {
-            xdb.parse(fis);
+            xdb.parse(is);
             fail("Should fail during parse");
         }
         catch (XmpParsingException e)
         {
             Assert.assertEquals(ErrorType.NoSchema, e.getErrorType());
         }
+        finally
+        {
+            is.close();
+        }
     }
 
     @Test
-    public void testUndefinedPropertyWithDefinedSchema()
+    public void testUndefinedPropertyWithDefinedSchema() throws IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/undefinedpropertyindefinedschema.xml");
+        InputStream is = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/undefinedpropertyindefinedschema.xml");
         try
         {
-            xdb.parse(fis);
+            xdb.parse(is);
             fail("Should fail during parse");
         }
         catch (XmpParsingException e)
         {
             Assert.assertEquals(ErrorType.NoType, e.getErrorType());
         }
+        finally
+        {
+            is.close();
+        }
     }
 
     @Test
-    public void testUndefinedStructuredWithDefinedSchema()
+    public void testUndefinedStructuredWithDefinedSchema() throws IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/undefinedstructuredindefinedschema.xml");
+        InputStream is = 
DomXmpParser.class.getResourceAsStream("/invalidxmp/undefinedstructuredindefinedschema.xml");
         try
         {
-            xdb.parse(fis);
+            xdb.parse(is);
             fail("Should fail during parse");
         }
         catch (XmpParsingException e)
         {
             Assert.assertEquals(ErrorType.NoValueType, e.getErrorType());
         }
+        finally
+        {
+            is.close();
+        }
     }
 
     @Test
-    public void testRdfAboutFound() throws XmpParsingException
+    public void testRdfAboutFound() throws XmpParsingException, IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/validxmp/emptyli.xml");
-        XMPMetadata metadata = xdb.parse(fis);
+        InputStream is = 
DomXmpParser.class.getResourceAsStream("/validxmp/emptyli.xml");
+        XMPMetadata metadata = xdb.parse(is);
         List<XMPSchema> schemas = metadata.getAllSchemas();
         for (XMPSchema xmpSchema : schemas)
         {
             Assert.assertNotNull(xmpSchema.getAboutAttribute());
         }
+        is.close();
     }
 
     @Test
-    public void testWihtAttributesAsProperties() throws XmpParsingException, 
TransformerException, NoSuchAlgorithmException, UnsupportedEncodingException
+    public void testWihtAttributesAsProperties() throws XmpParsingException, 
TransformerException, NoSuchAlgorithmException, UnsupportedEncodingException, 
IOException
     {
-        InputStream fis = 
DomXmpParser.class.getResourceAsStream("/validxmp/attr_as_props.xml");
-        XMPMetadata metadata = xdb.parse(fis);
+        InputStream is = 
DomXmpParser.class.getResourceAsStream("/validxmp/attr_as_props.xml");
+        XMPMetadata metadata = xdb.parse(is);
 
         AdobePDFSchema pdf = metadata.getAdobePDFSchema();
         Assert.assertEquals("GPL Ghostscript 8.64", pdf.getProducer());
@@ -334,10 +373,11 @@ public class DeserializationTest
         Assert.assertNotNull(basic.getCreateDate());
         
         checkTransform(metadata, 
"91466370449938102905842936306160100538543510664071400903097987792216034311743");
+        is.close();
     }
 
     @Test
-    public void testSpaceTextValues() throws XmpParsingException, 
TransformerException, NoSuchAlgorithmException, UnsupportedEncodingException
+    public 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
@@ -349,10 +389,11 @@ public class DeserializationTest
         Assert.assertEquals("Canon 
",metadata.getXMPBasicSchema().getCreatorTool());
         
         checkTransform(metadata, 
"65475542891943378255730260794798768587695617138297196920293698476028940113080");
+        is.close();
     }
 
     @Test
-    public void testMetadataParsing() throws TransformerException, 
NoSuchAlgorithmException, UnsupportedEncodingException
+    public void testMetadataParsing() throws TransformerException, 
NoSuchAlgorithmException, UnsupportedEncodingException, IOException
     {
         XMPMetadata metadata = XMPMetadata.createXMPMetadata();
 
@@ -378,7 +419,7 @@ public class DeserializationTest
      * @throws UnsupportedEncodingException 
      */
     @Test
-    public void testEmptyDate() throws XmpParsingException, 
TransformerException, NoSuchAlgorithmException, UnsupportedEncodingException
+    public void testEmptyDate() throws XmpParsingException, 
TransformerException, NoSuchAlgorithmException, UnsupportedEncodingException, 
IOException
     {
         String xmpmeta = "<?xpacket begin=\"\" 
id=\"W5M0MpCehiHzreSzNTczkc9d\"?>\n"
                 + "<x:xmpmeta x:xmptk=\"Adobe XMP Core 4.2.1-c041 52.342996, 
2008/05/07-20:48:00\" xmlns:x=\"adobe:ns:meta/\">\n"
@@ -394,7 +435,7 @@ public class DeserializationTest
     }
 
     private void checkTransform(XMPMetadata metadata, String expected)
-            throws TransformerException, NoSuchAlgorithmException, 
UnsupportedEncodingException
+            throws TransformerException, NoSuchAlgorithmException, 
UnsupportedEncodingException, IOException
     {
         serializer.serialize(metadata, baos, true);
         String replaced = baos.toString("UTF-8").replace("\r\n", "\n");

Reply via email to