jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nicholas DiPiazza (JIRA)" <j...@apache.org>
Subject [jira] Updated: (JCR-1787) XmlHandler export functions don't work in XML repository mode - causes XML with XSLT dependencies to show up with jcr:content XML element.
Date Tue, 07 Oct 2008 00:29:44 GMT

     [ 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.


Mime
View raw message