You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2025/06/28 15:49:11 UTC

svn commit: r1926831 - in /pdfbox/branches/3.0/xmpbox/src: main/java/org/apache/xmpbox/type/DateType.java test/java/org/apache/xmpbox/parser/DeserializationTest.java

Author: tilman
Date: Sat Jun 28 15:49:11 2025
New Revision: 1926831

URL: http://svn.apache.org/viewvc?rev=1926831&view=rev
Log:
PDFBOX-6029: avoid NPE; add test

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

Modified: pdfbox/branches/3.0/xmpbox/src/main/java/org/apache/xmpbox/type/DateType.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/xmpbox/src/main/java/org/apache/xmpbox/type/DateType.java?rev=1926831&r1=1926830&r2=1926831&view=diff
==============================================================================
--- pdfbox/branches/3.0/xmpbox/src/main/java/org/apache/xmpbox/type/DateType.java (original)
+++ pdfbox/branches/3.0/xmpbox/src/main/java/org/apache/xmpbox/type/DateType.java Sat Jun 28 15:49:11 2025
@@ -146,6 +146,10 @@ public class DateType extends AbstractSi
     @Override
     public String getStringValue()
     {
+        if (dateValue == null)
+        {
+            return null;
+        }
         return DateConverter.toISO8601(dateValue);
     }
 

Modified: pdfbox/branches/3.0/xmpbox/src/test/java/org/apache/xmpbox/parser/DeserializationTest.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/xmpbox/src/test/java/org/apache/xmpbox/parser/DeserializationTest.java?rev=1926831&r1=1926830&r2=1926831&view=diff
==============================================================================
--- pdfbox/branches/3.0/xmpbox/src/test/java/org/apache/xmpbox/parser/DeserializationTest.java (original)
+++ pdfbox/branches/3.0/xmpbox/src/test/java/org/apache/xmpbox/parser/DeserializationTest.java Sat Jun 28 15:49:11 2025
@@ -371,6 +371,32 @@ class DeserializationTest
         checkTransform(metadata, "90022311886271402508155234494196354960301469636090129252744270615851988530557");
     }
 
+    /**
+     * PDFBOX-6029: serialize an empty date property, this brought a NullPointerException.
+     *
+     * @throws XmpParsingException
+     * @throws TransformerException
+     * @throws NoSuchAlgorithmException
+     * @throws UnsupportedEncodingException
+     */
+    @Test
+    void testEmptyDate() throws XmpParsingException, TransformerException, NoSuchAlgorithmException, UnsupportedEncodingException
+    {
+        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"
+                + "  <rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"
+                + "   <rdf:Description rdf:about=\"\" xmlns:xmp=\"http://ns.adobe.com/xap/1.0/\">\n"
+                + "    <xmp:CreateDate></xmp:CreateDate>\n"
+                + "   </rdf:Description>\n"
+                + "  </rdf:RDF>\n"
+                + "</x:xmpmeta>\n"
+                + "<?xpacket end=\"w\"?>";
+        DomXmpParser xmpParser = new DomXmpParser();
+        xmpParser.setStrictParsing(false);
+        XMPMetadata xmp = xmpParser.parse(xmpmeta.getBytes());
+        checkTransform(xmp, "12127125812762553969536294425864809210802519304519294152028982122058554009237");
+    }
+
     private void checkTransform(XMPMetadata metadata, String expected)
             throws TransformerException, NoSuchAlgorithmException, UnsupportedEncodingException
     {