[
https://issues.apache.org/jira/browse/JCR-1787?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Nicholas DiPiazza updated JCR-1787:
-----------------------------------
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;
try {
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
was:
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="PD94bWwtc3R5bGVzaGVldCB0eXBlPSJ0ZXh0L3hzbCIgaHJlZj0iaHR0cDovLzE5Mi4xNjguMi41Ojg3ODcvL3hsZWFybi9pbmZ1c2UveHNsdC9sYXlvdXRfMV8xXzEueHNsIj8+PGFjdGl2aXR5IGxvb2tuZmVlbD0iYmx1ZV9zdHJlYW0iIHdlYmFwcEN0eHQ9Ii94bGVhcm4iIGFjdGl2aXR5VGVtcGxhdGVJZD0ibGF5b3V0XzFfMV8xIiBmb290ZXI9InRydWUiIGhlYWRlcj0idHJ1ZSIgaWQ9ImFjdGl2aXR5MC43Mjc3NDIyODAzMzgxNTQwLjM2OTkyNzcxOTE3MTczMjEiIG5hcnJhdGlvbkF1dG9TdGFydD0iIiBuYXJyYXRpb25QYXRoPSIiIG5hcnJhdGlvblNob3dQbGF5ZXI9IiIgbmFycmF0aW9uVXVpZD0iIiB0aXRsZT0iQWN0aXZpdHkgMSI+PGNlbGxzLz48L2FjdGl2aXR5Pg=="
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;
try {
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
> XmlHandler export functions don't work in XML repository mode - causes XML
> with XSLT dependencies to show up with jcr:content XML element.
> ------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: JCR-1787
> URL: https://issues.apache.org/jira/browse/JCR-1787
> Project: Jackrabbit
> Issue Type: Bug
> Reporter: Nicholas DiPiazza
>
> 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;
> try {
> 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
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.