[ http://issues.apache.org/jira/browse/JCR-325?page=all ]

Jukka Zitting updated JCR-325:
------------------------------

    Attachment: namespace-context.patch

Attached a patch that contains the new namespace context implementation. The 
namespace-context.patch was made against the current SVN trunk and does not 
contain any of the other refactoring changes so it should be relatively easy to 
review.

This change contains a lot more manual changes than the xml-refactoring.patch 
that was mostly tool-generated. I'm however again quite confident about the 
code quality, it passes all the unit tests and has no trouble handling 
convoluted XML documents like this:

    <foo xmlns="foo-ns"><bar xmlns="bar-ns"/></foo>

The patch lets the ImportHandler class keep track of the startPrefixMapping 
calls per each XML element. These local prefix mappings are reported to the 
target handler using startNamespaceContext() before the related startElement() 
call. Similarly each endElement() call is followed by a endNamespaceContext() 
call. The TargetImportHandler class uses these namespace context calls to 
manage the local nsContext variable so that it always contains a reference to 
the immutable namespace context of the current XML element.

> docview roundtripping does not work with multivalue non-string properties
> -------------------------------------------------------------------------
>
>          Key: JCR-325
>          URL: http://issues.apache.org/jira/browse/JCR-325
>      Project: Jackrabbit
>         Type: Improvement
>   Components: xml
>     Versions: 0.9, 1.0
>  Environment: jackrabbit r379292
>     Reporter: Tobias Bocanegra
>     Assignee: Jukka Zitting
>  Attachments: namespace-context.patch, xml-refactoring.patch
>
> when exporting a multivalue property with docview, the property values are 
> serialized to a space delimited list in the xml attributes:
> for example:
> <?xml version="1.0" encoding="UTF-8"?>
> .
> .
> <testNode 
>     jcr:primaryType="refTest" 
>     refs="b5c12524-5446-4c1a-b024-77f623680271 
> 7b4d4e6f-9515-47d8-a77c-b4beeaf469bc"
> />
> the refTest nodetype was:
> [refTest] 
> - refs (reference) multiple 
> importing this docview fails with: javax.jcr.ValueFormatException: not a 
> valid UUID format
> this is due to the fact, that the space delimited list is not exploded 
> anymore. actually this code is commented:
> org.apache.jackrabbit.core.xml.DocViewImportHandler, lines 191 - 200:
> /*
>                 // @todo should attribute value be interpreted as LIST type 
> (i.e. multi-valued property)?
>                 String[] strings = Text.explode(attrValue, ' ', true);
>                 propValues = new Value[strings.length];
>                 for (int j = 0; j < strings.length; j++) {
>                     // decode encoded blanks in value
>                     strings[j] = Text.replace(strings[j], "_x0020_", " ");
>                     propValues[j] = InternalValue.create(strings[j]);
>                 }
> */
> i haven't tested, but i assume this also fails for all other non-string 
> property types.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to