[ https://issues.apache.org/jira/browse/JCR-1803?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jukka Zitting resolved JCR-1803. -------------------------------- Resolution: Fixed Assignee: Jukka Zitting I think it's better if we just explicitly handle both STRING and REFERENCE values here. I committed the fix to trunk in revision 704158. Instead of using the discouraged internalValue() method, I explicitly check the type of the value and react accordingly. Merged to the 1.5 branch in revision 704160. > Node.restore() throws java.lang.ClassCastException > -------------------------------------------------- > > Key: JCR-1803 > URL: https://issues.apache.org/jira/browse/JCR-1803 > Project: Jackrabbit > Issue Type: Bug > Components: versioning > Affects Versions: core 1.4.6, 1.5.0 > Reporter: Przemo Pakulski > Assignee: Jukka Zitting > Priority: Blocker > Fix For: 1.5.0 > > > I'm trying to upgrade to 1.5 using existing 1.3.x repository. Restore of > versionable node throws ClassCastException. > Caused by: java.lang.ClassCastException: org.apache.jackrabbit.uuid.UUID > at > org.apache.jackrabbit.core.value.InternalValue.getString(InternalValue.java:436) > at > org.apache.jackrabbit.core.version.InternalFrozenNodeImpl.<init>(InternalFrozenNodeImpl.java:113) > at > org.apache.jackrabbit.core.version.AbstractVersionManager.createInternalVersionItem(AbstractVersionManager.java:576) > at > org.apache.jackrabbit.core.version.VersionManagerImpl.getItem(VersionManagerImpl.java:258) > at > org.apache.jackrabbit.core.version.InternalVersionImpl.getFrozenNode(InternalVersionImpl.java:111) > at > org.apache.jackrabbit.core.version.VersionImpl.getFrozenNode(VersionImpl.java:120) > at > org.apache.jackrabbit.core.NodeImpl.internalRestore(NodeImpl.java:4180) > at > org.apache.jackrabbit.core.NodeImpl.internalRestore(NodeImpl.java:4141) > at org.apache.jackrabbit.core.NodeImpl.restore(NodeImpl.java:3429) > It seems that bug has been introduced already in 1.4 as part of JCR-926 > (InternalValue cleanup). > Index: > C:/data/jackrabbit/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/InternalFrozenNodeImpl.java > =================================================================== > --- > C:/data/jackrabbit/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/InternalFrozenNodeImpl.java > (revision 549117) > +++ > C:/data/jackrabbit/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/version/InternalFrozenNodeImpl.java > (working copy) > @@ -109,10 +109,10 @@ > PropertyState prop = props[i]; > if (prop.getName().equals(QName.JCR_FROZENUUID)) { > // special property > - frozenUUID = > UUID.fromString(node.getPropertyValue(QName.JCR_FROZENUUID).internalValue().toString()); > + frozenUUID = > UUID.fromString(node.getPropertyValue(QName.JCR_FROZENUUID).getString()); > Probably one of the assumptions made was wrong : > - The type of QName.JCR_FROZENUUID is STRING (Object.toString() was used > before). -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.