You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Bob Wieler (JIRA)" <ji...@apache.org> on 2007/05/09 17:14:15 UTC

[jira] Created: (JCR-908) Unable to properly restore a previous version of a node that contains multivalue properties.

Unable to properly restore a previous version of a node that contains multivalue properties.
--------------------------------------------------------------------------------------------

                 Key: JCR-908
                 URL: https://issues.apache.org/jira/browse/JCR-908
             Project: Jackrabbit
          Issue Type: Bug
          Components: core
    Affects Versions: 1.3
            Reporter: Bob Wieler


An ArrayIndexOutOfBoundsException occurs when I am trying to restore a previous version of a node when it contains empty multi value properties.

Here is a stack trace for where in he core code the exception is occurring:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0
	at org.apache.jackrabbit.core.NodeImpl.restoreFrozenState(NodeImpl.java:3856)
	at org.apache.jackrabbit.core.NodeImpl.internalRestore(NodeImpl.java:3799)
	at org.apache.jackrabbit.core.NodeImpl.internalRestore(NodeImpl.java:3760)
	at org.apache.jackrabbit.core.NodeImpl.restore(NodeImpl.java:3057)
...

Line 3856 in NodeImpl.restoreFrozenState is:

                internalSetProperty(props[i].getName(), prop.getValues()[0]);

This is always being called even for multivalued properties (the previous "if (prop.isMultiValued())" is always returning false). Even if I have a value in the multi-value property, only the first item is restored because the prop.isMultiValued() call in NodeImpl.restoreFrozenState() never returns true regardless of whether the property is multivalued or not.


The node definition is:

  <nodeType name="bob:customType"
            isMixin="false"
            hasOrderableChildNodes="false"
            primaryItemName="">
    <supertypes>
      <supertype>mix:lockable</supertype>
      <supertype>mix:versionable</supertype>
    </supertypes>
    <propertyDefinition name="bob:properties"
                        requiredType="Reference"
                        autoCreated="false"
                        mandatory="true"
                        onParentVersion="COPY"
                        protected="false"
                        multiple="true"/>
  </nodeType>

A new node is created with the primary type being "bob:customType" and an empty array of References is set as the value for that property in the node.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (JCR-908) Unable to properly restore a previous version of a node that contains multivalue properties.

Posted by "Jukka Zitting (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-908?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jukka Zitting updated JCR-908:
------------------------------

          Component/s:     (was: versioning)
                       jackrabbit-core
    Affects Version/s: 1.5.0
                       1.4

> Unable to properly restore a previous version of a node that contains multivalue properties.
> --------------------------------------------------------------------------------------------
>
>                 Key: JCR-908
>                 URL: https://issues.apache.org/jira/browse/JCR-908
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: jackrabbit-core
>    Affects Versions: 1.3, 1.4, 1.5.0
>            Reporter: Bob Wieler
>
> An ArrayIndexOutOfBoundsException occurs when I am trying to restore a previous version of a node when it contains empty multi value properties.
> Here is a stack trace for where in he core code the exception is occurring:
> Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0
> 	at org.apache.jackrabbit.core.NodeImpl.restoreFrozenState(NodeImpl.java:3856)
> 	at org.apache.jackrabbit.core.NodeImpl.internalRestore(NodeImpl.java:3799)
> 	at org.apache.jackrabbit.core.NodeImpl.internalRestore(NodeImpl.java:3760)
> 	at org.apache.jackrabbit.core.NodeImpl.restore(NodeImpl.java:3057)
> ...
> Line 3856 in NodeImpl.restoreFrozenState is:
>                 internalSetProperty(props[i].getName(), prop.getValues()[0]);
> This is always being called even for multivalued properties (the previous "if (prop.isMultiValued())" is always returning false). Even if I have a value in the multi-value property, only the first item is restored because the prop.isMultiValued() call in NodeImpl.restoreFrozenState() never returns true regardless of whether the property is multivalued or not.
> The node definition is:
>   <nodeType name="bob:customType"
>             isMixin="false"
>             hasOrderableChildNodes="false"
>             primaryItemName="">
>     <supertypes>
>       <supertype>mix:lockable</supertype>
>       <supertype>mix:versionable</supertype>
>     </supertypes>
>     <propertyDefinition name="bob:properties"
>                         requiredType="Reference"
>                         autoCreated="false"
>                         mandatory="true"
>                         onParentVersion="COPY"
>                         protected="false"
>                         multiple="true"/>
>   </nodeType>
> A new node is created with the primary type being "bob:customType" and an empty array of References is set as the value for that property in the node.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (JCR-908) Unable to properly restore a previous version of a node that contains multivalue properties.

Posted by "Stefan Guggisberg (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-908?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stefan Guggisberg updated JCR-908:
----------------------------------

    Component/s:     (was: core)
                 versioning

> Unable to properly restore a previous version of a node that contains multivalue properties.
> --------------------------------------------------------------------------------------------
>
>                 Key: JCR-908
>                 URL: https://issues.apache.org/jira/browse/JCR-908
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: versioning
>    Affects Versions: 1.3
>            Reporter: Bob Wieler
>
> An ArrayIndexOutOfBoundsException occurs when I am trying to restore a previous version of a node when it contains empty multi value properties.
> Here is a stack trace for where in he core code the exception is occurring:
> Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0
> 	at org.apache.jackrabbit.core.NodeImpl.restoreFrozenState(NodeImpl.java:3856)
> 	at org.apache.jackrabbit.core.NodeImpl.internalRestore(NodeImpl.java:3799)
> 	at org.apache.jackrabbit.core.NodeImpl.internalRestore(NodeImpl.java:3760)
> 	at org.apache.jackrabbit.core.NodeImpl.restore(NodeImpl.java:3057)
> ...
> Line 3856 in NodeImpl.restoreFrozenState is:
>                 internalSetProperty(props[i].getName(), prop.getValues()[0]);
> This is always being called even for multivalued properties (the previous "if (prop.isMultiValued())" is always returning false). Even if I have a value in the multi-value property, only the first item is restored because the prop.isMultiValued() call in NodeImpl.restoreFrozenState() never returns true regardless of whether the property is multivalued or not.
> The node definition is:
>   <nodeType name="bob:customType"
>             isMixin="false"
>             hasOrderableChildNodes="false"
>             primaryItemName="">
>     <supertypes>
>       <supertype>mix:lockable</supertype>
>       <supertype>mix:versionable</supertype>
>     </supertypes>
>     <propertyDefinition name="bob:properties"
>                         requiredType="Reference"
>                         autoCreated="false"
>                         mandatory="true"
>                         onParentVersion="COPY"
>                         protected="false"
>                         multiple="true"/>
>   </nodeType>
> A new node is created with the primary type being "bob:customType" and an empty array of References is set as the value for that property in the node.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.