Author: tilman
Date: Fri Dec 19 14:23:03 2025
New Revision: 1930731
Log:
PDFBOX-6128: push / pop for resource type
Modified:
pdfbox/branches/2.0/xmpbox/src/main/java/org/apache/xmpbox/xml/DomXmpParser.java
pdfbox/branches/2.0/xmpbox/src/test/java/org/apache/xmpbox/xml/DomXmpParserTest.java
Modified:
pdfbox/branches/2.0/xmpbox/src/main/java/org/apache/xmpbox/xml/DomXmpParser.java
==============================================================================
---
pdfbox/branches/2.0/xmpbox/src/main/java/org/apache/xmpbox/xml/DomXmpParser.java
Fri Dec 19 12:53:17 2025 (r1930730)
+++
pdfbox/branches/2.0/xmpbox/src/main/java/org/apache/xmpbox/xml/DomXmpParser.java
Fri Dec 19 14:23:03 2025 (r1930731)
@@ -623,7 +623,15 @@ public class DomXmpParser
{
if (DomHelper.isParseTypeResource(liElement))
{
- return parseLiDescription(xmp, descriptor, liElement);
+ try
+ {
+ nsFinder.push(liElement);
+ return parseLiDescription(xmp, descriptor, liElement);
+ }
+ finally
+ {
+ nsFinder.pop();
+ }
}
// will find rdf:Description
Element liChild = DomHelper.getUniqueElementChild(liElement);
Modified:
pdfbox/branches/2.0/xmpbox/src/test/java/org/apache/xmpbox/xml/DomXmpParserTest.java
==============================================================================
---
pdfbox/branches/2.0/xmpbox/src/test/java/org/apache/xmpbox/xml/DomXmpParserTest.java
Fri Dec 19 12:53:17 2025 (r1930730)
+++
pdfbox/branches/2.0/xmpbox/src/test/java/org/apache/xmpbox/xml/DomXmpParserTest.java
Fri Dec 19 14:23:03 2025 (r1930731)
@@ -1206,4 +1206,32 @@ public class DomXmpParserTest
assertEquals("Expecting namespace
'http://www.w3.org/1999/02/22-rdf-syntax-ns#' and found
'https://www.w3.org/1999/02/22-rdf-syntax-ns#'", ex.getMessage());
}
}
+
+ @Test
+ public void testTypeInLiResourceElement() throws XmpParsingException,
UnsupportedEncodingException
+ {
+ // <rdf:li
xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
rdf:parseType="Resource"
+ String s = "<?xml version=\"1.0\" encoding=\"UTF-8\"
standalone=\"no\"?>\n" +
+ "<?xpacket begin=\"\"
id=\"W5M0MpCehiHzreSzNTczkc9d\"?><x:xmpmeta xmlns:x=\"adobe:ns:meta/\">\n" +
+ " <rdf:RDF
xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n" +
+ " <rdf:Description
xmlns:xmpMM=\"http://ns.adobe.com/xap/1.0/mm/\" rdf:about=\"\">\n" +
+ " <xmpMM:History>\n" +
+ " <rdf:Seq>\n" +
+ " <rdf:li
xmlns:stEvt=\"http://ns.adobe.com/xap/1.0/sType/ResourceEvent#\"
rdf:parseType=\"Resource\">\n" +
+ "
<stEvt:action>created</stEvt:action>\n" +
+ " <stEvt:parameters>original PDF
file</stEvt:parameters>\n" +
+ " </rdf:li>\n" +
+ " </rdf:Seq>\n" +
+ " </xmpMM:History>\n" +
+ " </rdf:Description>\n" +
+ " </rdf:RDF>\n" +
+ "</x:xmpmeta><?xpacket end=\"w\"?>";
+ DomXmpParser xmpParser = new DomXmpParser();
+ XMPMetadata xmp2 = xmpParser.parse(s.getBytes("utf-8"));
+ XMPMediaManagementSchema xmpMediaManagementSchema =
xmp2.getXMPMediaManagementSchema();
+ ArrayProperty historyProperty =
xmpMediaManagementSchema.getHistoryProperty();
+ ResourceEventType firstHistoryEntry = (ResourceEventType)
historyProperty.getAllProperties().iterator().next();
+ assertEquals("created", firstHistoryEntry.getAction());
+ assertEquals("original PDF file", firstHistoryEntry.getParameters());
+ }
}