Gunnar Hillert created XGC-138:
----------------------------------
Summary: Adobe XMP - NullPointerException:
"org.apache.xmlgraphics.xmp.XMPHandler.getCurrentProperties()" is
null"org.apache.xmlgraphics.xmp.XMPHandler.getCurrentProperties()" is null
Key: XGC-138
URL: https://issues.apache.org/jira/browse/XGC-138
Project: XMLGraphicsCommons
Issue Type: Bug
Components: xmp
Affects Versions: 2.9
Reporter: Gunnar Hillert
When calling
{code:java}
XMPParser.parseXMP(new StreamSource(new StringReader(xmpString))){code}
with XMP XML that contains facial recognition data, a *NullPointerException* is
thrown:
{code:java}
Caused by: javax.xml.transform.TransformerException:
java.lang.NullPointerException: Cannot invoke
"org.apache.xmlgraphics.xmp.PropertyAccess.setProperty(org.apache.xmlgraphics.xmp.XMPProperty)"
because the return value of
"org.apache.xmlgraphics.xmp.XMPHandler.getCurrentProperties()" is null
at
java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:789)
at
java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:395)
at org.apache.xmlgraphics.xmp.XMPParser.parseXMP(XMPParser.java:63)
at
com.hillert.image.metadata.service.support.MetadataExtractor.getXMPMetadata(MetadataExtractor.java:146)
... 71 more
Caused by: java.lang.NullPointerException: Cannot invoke
"org.apache.xmlgraphics.xmp.PropertyAccess.setProperty(org.apache.xmlgraphics.xmp.XMPProperty)"
because the return value of
"org.apache.xmlgraphics.xmp.XMPHandler.getCurrentProperties()" is null
at org.apache.xmlgraphics.xmp.XMPHandler.startElement(XMPHandler.java:157)
at
java.xml/com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.closeStartTag(ToXMLSAXHandler.java:206)
at
java.xml/com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.characters(ToXMLSAXHandler.java:526)
at
java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.characters(AbstractSAXParser.java:555)
at
java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:485)
at
java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:889)
at
java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:825)
at
java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at
java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1224)
at
java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:637)
at
java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:666)
at
java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:780)
... 74 more{code}
In order to reproduce, take 1 image with with at least 1 person in it and
import it into {*}Adobe Light Room Classic{*}. Export the original image with
all Metadata intact.
Calling:
{code:java}
XMPParser.parseXMP(new StreamSource(new StringReader(xmpString))){code}
will fail. Taking an image without any humans will work.
As far as I can tell the following additional XML is present in the image with
the human face:
{code:java}
<mwg-rs:Regions rdf:parseType="Resource">
<mwg-rs:AppliedToDimensions stDim:h="3456" stDim:unit="pixel"
stDim:w="4608"/>
<mwg-rs:RegionList>
<rdf:Bag>
<rdf:li>
<rdf:Description mwg-rs:Rotation="0.00000" mwg-rs:Type="Face">
<mwg-rs:Area stArea:h="0.27734" stArea:w="0.20801"
stArea:x="0.57178" stArea:y="0.34180"/>
</rdf:Description>
</rdf:li>
</rdf:Bag>
</mwg-rs:RegionList>
</mwg-rs:Regions> {code}
Once you remove:
{code:java}
<rdf:Description mwg-rs:Rotation="0.00000" mwg-rs:Type="Face">
<mwg-rs:Area stArea:h="0.27734" stArea:w="0.20801" stArea:x="0.57178"
stArea:y="0.34180"/>
</rdf:Description> {code}
the parsing of the XMP XML data will succeed.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]