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+")");


Reply via email to