Author: tilman
Date: Tue Dec 16 12:40:22 2025
New Revision: 1930629

Log:
PDFBOX-5660: expand test coverage, correct exception message

Modified:
   
pdfbox/branches/3.0/xmpbox/src/main/java/org/apache/xmpbox/xml/DomXmpParser.java
   
pdfbox/branches/3.0/xmpbox/src/test/java/org/apache/xmpbox/xml/DomXmpParserTest.java

Modified: 
pdfbox/branches/3.0/xmpbox/src/main/java/org/apache/xmpbox/xml/DomXmpParser.java
==============================================================================
--- 
pdfbox/branches/3.0/xmpbox/src/main/java/org/apache/xmpbox/xml/DomXmpParser.java
    Tue Dec 16 12:40:17 2025        (r1930628)
+++ 
pdfbox/branches/3.0/xmpbox/src/main/java/org/apache/xmpbox/xml/DomXmpParser.java
    Tue Dec 16 12:40:22 2025        (r1930629)
@@ -225,7 +225,7 @@ public class DomXmpParser
                 if (!tm.isDefinedSchema(schemaExtension.getNamespaceURI()))
                 {
                     throw new XmpParsingException(ErrorType.NoSchema,
-                            "This namespace is not a schema or a structured 
type : " + namespace);
+                            "This namespace is not from a schema: " + 
namespace);
                 }
                 PropertyType type = checkPropertyDefinition(xmp, 
DomHelper.getQName(schemaExtension));
                 final XMPSchema schema = 
tm.getSchemaFactory(namespace).createXMPSchema(xmp, 
schemaExtension.getPrefix());
@@ -366,7 +366,7 @@ public class DomXmpParser
             if (!tm.isDefinedSchema(namespace))
             {
                 throw new XmpParsingException(ErrorType.NoSchema,
-                        "This namespace is not a schema or a structured type : 
" + namespace);
+                        "This namespace is not from a schema: " + namespace);
             }
             if (isSchemaExtensionProperty(property))
             {

Modified: 
pdfbox/branches/3.0/xmpbox/src/test/java/org/apache/xmpbox/xml/DomXmpParserTest.java
==============================================================================
--- 
pdfbox/branches/3.0/xmpbox/src/test/java/org/apache/xmpbox/xml/DomXmpParserTest.java
        Tue Dec 16 12:40:17 2025        (r1930628)
+++ 
pdfbox/branches/3.0/xmpbox/src/test/java/org/apache/xmpbox/xml/DomXmpParserTest.java
        Tue Dec 16 12:40:22 2025        (r1930629)
@@ -763,4 +763,31 @@ class DomXmpParserTest
         ExifSchema exifSchema = (ExifSchema) xmp.getSchema(ExifSchema.class);
         assertEquals("[Flash=TextType:1]", 
exifSchema.getProperty(ExifSchema.FLASH).toString());
     }
+
+    @Test
+    void testBadSchema() throws XmpParsingException
+    {
+        // from file 130841.pdf
+        // structured type used like a schema
+        String s = "<?xml version=\"1.0\" encoding=\"UTF-8\" 
standalone=\"no\"?>\n" +
+                    "<?xpacket begin='' 
id='W5M0MpCehiHzreSzNTczkc9d'?><?adobe-xap-filters esc=\"CRLF\"?>\n" +
+                    "<x:xmpmeta xmlns:x=\"adobe:ns:meta/\"\n" +
+                    "           x:xmptk=\"XMP toolkit\">\n" +
+                    "  <rdf:RDF xmlns:iX=\"http://ns.adobe.com/iX/1.0/\"\n"; +
+                    "           
xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\";>\n" +
+                    "          <rdf:Description 
xmlns:stJob=\"http://ns.adobe.com/xap/1.0/sType/Job#\"\n"; +
+                    "                           rdf:about=\"uuid\"\n" +
+                    "                           stJob:id=\"jobid\"\n" +
+                    "                           stJob:name=\"some name\">\n" +
+                    "                  
<stJob:URL>https://pdfbox.apache.org</stJob:URL>\n" +
+                    "          </rdf:Description>\n" +
+                    "  </rdf:RDF>\n" +
+                    "</x:xmpmeta><?xpacket end='w'?>";
+        
+        final DomXmpParser xmpParser1 = new DomXmpParser();
+        XmpParsingException ex = assertThrows(
+                XmpParsingException.class,
+                () -> xmpParser1.parse(s.getBytes(StandardCharsets.UTF_8)));
+        assertEquals("This namespace is not from a schema: 
http://ns.adobe.com/xap/1.0/sType/Job#";, ex.getMessage());
+    }
 }

Reply via email to