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());
+ }
}