Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
Description
I can't view XML files with XSLT dependencies because the XML returned from XML requests will come back as the "jcr:content" XML representation.
<?xml version="1.0" encoding="UTF-8" ?>
<jcr:content xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" xmlns:sv="http://www.jcp.org/jcr/sv/1.0" xmlns:mix="http://www.jcp.org/jcr/mix/1.0" xmlns:xrc="http://www.xerceo.com/learn/jcr-1.0" xmlns:rep="internal" jcr:primaryType="nt:resource" jcr:uuid="33951e14-7a9a-4746-b848-4f931f4c01be" jcr:data="" jcr:encoding="UTF-8" jcr:lastModified="2008-10-06T14:46:43.965-05:00" jcr:mimeType="text/xml" />
I suggest changes to package org.apache.jackrabbit.server.io.XmlHandler:
1) Create new method:
/**
- @see DefaultHandler#exportData(ExportContext, boolean, Node)
*/
protected void exportData(ExportContext context, boolean isCollection, Node contentNode) throws IOException, RepositoryException {
// first child of content is XML document root
if (contentNode.getNodes().hasNext()) { contentNode = contentNode.getNodes().nextNode(); }
OutputStream out = context.getOutputStream();
out.write(ValueHelper.serialize(contentNode.getProperty("jcr:data").getValue(), false).getBytes());
}
Change canExport method:
/**
- @see IOHandler#canExport(ExportContext, boolean)
*/
public boolean canExport(ExportContext context, boolean isCollection) {
if (super.canExport(context, isCollection)) {
String mimeType = null;
tryUnknown macro: { Node contentNode = getContentNode(context, isCollection); if (contentNode.hasProperty(JcrConstants.JCR_MIMETYPE)) { mimeType = contentNode.getProperty(JcrConstants.JCR_MIMETYPE).getString(); } else { mimeType = context.getMimeResolver().getMimeType(context.getExportRoot().getName()); } }catch (RepositoryException e)
{ // ignore and return false }return XML_MIMETYPE.equals(mimeType);
}
return false;
}
This causes my server to return the correct XML then