Reader decoded = new InputStreamReader(
new ByteArrayInputStream(xmpraw.toByteArray()),
DEFAULT_XMP_CHARSET);
try {
XMPMetadata xmp = XMPMetadata.load(new InputSource(decoded));
XMPSchemaDublinCore dc = xmp.getDublinCoreSchema();
if (dc != null) {
if (dc.getTitle() != null) {
metadata.set(TikaCoreProperties.TITLE, dc.getTitle());
}
if (dc.getDescription() != null) {
metadata.set(TikaCoreProperties.DESCRIPTION, dc.getDescription());
}
if (dc.getCreators() != null && dc.getCreators().size() > 0) {
metadata.set(TikaCoreProperties.CREATOR, joinCreators(dc.getCreators()));
}
if (dc.getSubjects() != null && dc.getSubjects().size() > 0) {
for (String keyword : dc.getSubjects()) {
metadata.add(TikaCoreProperties.KEYWORDS, keyword);
}
// TODO should we set KEYWORDS too?
// All tested photo managers set the same in Iptc.Application2.Keywords and Xmp.dc.subject
}