Author: tilman
Date: Wed Dec 24 11:14:59 2025
New Revision: 1930829
Log:
PDFBOX-6131: allow first char lower case in "pdfaProperty:valueType" for
extension schemas + test
Modified:
pdfbox/branches/2.0/xmpbox/src/main/java/org/apache/xmpbox/xml/PdfaExtensionHelper.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/PdfaExtensionHelper.java
==============================================================================
---
pdfbox/branches/2.0/xmpbox/src/main/java/org/apache/xmpbox/xml/PdfaExtensionHelper.java
Wed Dec 24 11:14:54 2025 (r1930828)
+++
pdfbox/branches/2.0/xmpbox/src/main/java/org/apache/xmpbox/xml/PdfaExtensionHelper.java
Wed Dec 24 11:14:59 2025 (r1930829)
@@ -51,8 +51,10 @@ public final class PdfaExtensionHelper
{
public static final String CLOSED_CHOICE = "closed Choice of ";
+ public static final String CLOSED_CHOICE_U = "Closed Choice of ";
public static final String OPEN_CHOICE = "open Choice of ";
+ public static final String OPEN_CHOICE_U = "Open Choice of ";
private PdfaExtensionHelper()
{
@@ -290,11 +292,11 @@ public final class PdfaExtensionHelper
return TypeMapping.createPropertyType(Types.LangAlt,
Cardinality.Simple);
}
// else all other cases
- if (valueType.startsWith(CLOSED_CHOICE))
+ if (valueType.startsWith(CLOSED_CHOICE) ||
valueType.startsWith(CLOSED_CHOICE_U))
{
valueType = valueType.substring(CLOSED_CHOICE.length());
}
- else if (valueType.startsWith(OPEN_CHOICE))
+ else if (valueType.startsWith(OPEN_CHOICE) ||
valueType.startsWith(OPEN_CHOICE_U))
{
valueType = valueType.substring(OPEN_CHOICE.length());
}
@@ -302,7 +304,7 @@ public final class PdfaExtensionHelper
Cardinality card = Cardinality.Simple;
if (pos > 0)
{
- String scard = valueType.substring(0, pos);
+ String scard = valueType.substring(0, pos).toLowerCase();
if ("seq".equals(scard))
{
card = Cardinality.Seq;
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
Wed Dec 24 11:14:54 2025 (r1930828)
+++
pdfbox/branches/2.0/xmpbox/src/test/java/org/apache/xmpbox/xml/DomXmpParserTest.java
Wed Dec 24 11:14:59 2025 (r1930829)
@@ -1474,4 +1474,16 @@ public class DomXmpParserTest
assertEquals("Failed to instantiate DateType property with value
2019-05-02T22:03:5Z in xmp:CreateDate", ex.getMessage());
}
}
+
+ @Test
+ public void testPDFBox6131() throws IOException, XmpParsingException,
BadFieldValueException
+ {
+ // Contains "Open Choice of Integer" instead of "open Choice of
Integer"
+ InputStream is =
DomXmpParser.class.getResourceAsStream("/org/apache/xmpbox/xml/PDFBOX-6131-0015675.xml");
+ DomXmpParser xmpParser = new DomXmpParser();
+ XMPMetadata xmp = xmpParser.parse(is);
+ XMPSchema uaSchema = xmp.getSchema("http://www.aiim.org/pdfua/ns/id/");
+ assertEquals((Integer) 1,
uaSchema.getIntegerPropertyValueAsSimple("part"));
+ is.close();
+ }
}