Stefan Kopf created CMIS-639:
--------------------------------
Summary: AtomPub: Query result entries are missing the
<atom:content> element
Key: CMIS-639
URL: https://issues.apache.org/jira/browse/CMIS-639
Project: Chemistry
Issue Type: Bug
Components: opencmis-server
Affects Versions: OpenCMIS 0.8.0
Reporter: Stefan Kopf
Acording to CMIS spec, the <atom:content> element is required in every
<atom:entry> element. See Sections 3.5.2 and 3.4.1.3.6.
The <atom:content> element is present in every <atom:entry> returned for
getChildren in the NavigationService or for getObject in the ObjectService.
For some reason, the method writeQueryResultEntry in the
...atompub.DiscoveryService does not make use of AtomPubUtils.writeObjectEntry
but assembles the result itself. But in this process, the <atom:content>
element is missing.
This problem can be fixed as follows:
private static void writeQueryResultEntry(AtomEntry entry, ObjectData
result, String id, GregorianCalendar now, UrlBuilder baseUrl)
throws Exception {
CmisObjectType resultJaxb = convert(result);
if (resultJaxb == null) {
return;
}
// start
entry.startEntry(false);
// write Atom base tags
entry.writeAuthor("");
entry.writeId(entry.generateAtomId(id));
entry.writePublished(now);
entry.writeTitle("Query Result " + id);
entry.writeUpdated(now);
// BUGFIX start
String fileName = getStringProperty(result,
PropertyIds.CONTENT_STREAM_FILE_NAME);
String mimeType = getStringProperty(result,
PropertyIds.CONTENT_STREAM_MIME_TYPE);
String streamId = getIdProperty(result, PropertyIds.CONTENT_STREAM_ID);
BigInteger length = getIntegerProperty(result,
PropertyIds.CONTENT_STREAM_LENGTH);
boolean hasContent = fileName != null || mimeType != null || streamId
!= null || length != null;
String contentSrc = null;
if (hasContent) {
UrlBuilder contentSrcBuilder = compileUrlBuilder(baseUrl,
AtomPubUtils.RESOURCE_CONTENT, result.getId());
if (fileName != null) {
contentSrcBuilder.addPathSegment(fileName);
}
contentSrc = contentSrcBuilder.toString();
}
entry.writeContent(contentSrc, mimeType);
// BUGFIX end
// write query result object
JaxBHelper.marshal(JaxBHelper.CMIS_EXTRA_OBJECT_FACTORY.createObject(resultJaxb),
entry.getWriter(), true);
// we are done
entry.endEntry();
}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira