Author: gbailleul
Date: Fri Dec 14 06:42:54 2012
New Revision: 1421689
URL: http://svn.apache.org/viewvc?rev=1421689&view=rev
Log:
PDFBOX-1454: false reject of Pdf A1b?
xmp parsing fixed, a rdf description can contain zero element
Modified:
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/xml/DomHelper.java
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/xml/DomXmpParser.java
Modified:
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/xml/DomHelper.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/xml/DomHelper.java?rev=1421689&r1=1421688&r2=1421689&view=diff
==============================================================================
---
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/xml/DomHelper.java
(original)
+++
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/xml/DomHelper.java
Fri Dec 14 06:42:54 2012
@@ -52,6 +52,13 @@ public final class DomHelper {
return (Element)nl.item(pos);
}
+ /**
+ * Return the first child element of the element parameter.
+ * If there is no child, null is returned
+ * @param description
+ * @return
+ * @throws XmpParsingException
+ */
public static Element getFirstChildElement (Element description) throws
XmpParsingException {
NodeList nl = description.getChildNodes();
for (int i=0; i < nl.getLength(); i++) {
@@ -59,7 +66,7 @@ public final class DomHelper {
return (Element)nl.item(i);
}
}
- throw new XmpParsingException(ErrorType.Undefined,"Does not
contain element");
+ return null;
}
Modified:
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/xml/DomXmpParser.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/xml/DomXmpParser.java?rev=1421689&r1=1421688&r2=1421689&view=diff
==============================================================================
---
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/xml/DomXmpParser.java
(original)
+++
pdfbox/trunk/xmpbox/src/main/java/org/apache/padaf/xmpbox/xml/DomXmpParser.java
Fri Dec 14 06:42:54 2012
@@ -150,7 +150,7 @@ public class DomXmpParser {
List<Element> dataDescriptions = new
ArrayList<Element>(descriptions.size());
for (Element description : descriptions) {
Element first =
DomHelper.getFirstChildElement(description);
- if ("pdfaExtension".equals(first.getPrefix())) {
+ if (first!=null &&
"pdfaExtension".equals(first.getPrefix())) {
PdfaExtensionHelper.validateNaming(xmp,
description);
parseDescriptionRoot(xmp, description);
} else {
@@ -224,9 +224,11 @@ public class DomXmpParser {
container.addProperty(ast);
} else {
Element inner =
DomHelper.getFirstChildElement(property);
- AbstractStructuredType ast =
parseLiDescription(xmp, DomHelper.getQName(property), inner);
- ast.setPrefix(prefix);
- container.addProperty(ast);
+ if (inner!=null) {
+ AbstractStructuredType ast =
parseLiDescription(xmp, DomHelper.getQName(property), inner);
+ ast.setPrefix(prefix);
+ container.addProperty(ast);
+ }
}
} else if (type.type()==Types.DefinedType) {
if (DomHelper.isParseTypeResource(property)) {
@@ -380,8 +382,6 @@ public class DomXmpParser {
} else if (type.card().isArray()) {
ArrayProperty array =
tm.createArrayProperty(namespace, prefix, name, type.card());
ast.getContainer().addProperty(array);
-
-
Element bagOrSeq =
DomHelper.getUniqueElementChild(element);
List<Element> lis=
DomHelper.getElementChildren(bagOrSeq);
for (Element element2 : lis) {
@@ -410,7 +410,9 @@ public class DomXmpParser {
parseDescriptionInner(xmp, element,
cpc);
} else {
Element descElement =
DomHelper.getFirstChildElement(element);
-
parseDescriptionInner(xmp,descElement,cpc);
+ if (descElement!=null) {
+
parseDescriptionInner(xmp,descElement,cpc);
+ }
}
} else {
throw new XmpParsingException(ErrorType.NoType,
"Unidentified element to parse "+element+" (type="+type+")");