Did you review this unit test : http://svn.apache.org/repos/asf/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/version/AnnotationBasicVersionningTest.java
Sorry I'm on vacation. I promise to review this issue next week. Christophe On Tue, Aug 5, 2008 at 15:37, <[EMAIL PROTECTED]> wrote: > Hello Christophe and thank you very much for your reply. > > This issue does sound like my problem. However, this may go back to my > other problem listed. ( And forgive me if I ask a question that could have > been easily tested, but I am actually home on vacation without all my code, > but remain quite intrigued by this problem ). With both these code > snippets, I had been trying to test update and versioning. When my > checkin() failed on update, I allowed the program to still try to iterate > through the versions, simply to see if I would get results. Seeing as > update failed and there were no other versions, it makes sense that the > link you sent is that problem. This leaves a couple questions for me. > - Since my checkin() is failing, do I have any real way to test the > getObject by version? If I do a modify object, update() and save(), can I > test versioning without actually doing the checkin()? > - If I use the versionIterator to iterate through versions in the future, > should verifying that Version.getName() is not jcr:rootVersion be the best > way to take care of the problem you linked to me? > - According to the JCR spec (8.2.5), the InvalidItemStateException is > thrown if the versionalbe node has unsaved changes pending, which clearly I > am doing on the line before the checkin(). Do you have any input on this? > > Thanks for all your help. > H. Wilson > > On Mon, 4 Aug 2008 15:46:23 +0200, "Christophe Lombart" > <[EMAIL PROTECTED]> wrote: > > Is it not related to this issue : > > https://issues.apache.org/jira/browse/JCR-1426 > > Let me know if you need more help. > > > > br, > > Christophe > > > > On Fri, Aug 1, 2008 at 17:04, H. Wilson <[EMAIL PROTECTED]> wrote: > > > >> I am including both these errors in one post, because I have a hunch > > they > >> are related. If it was a mistake to do so even if they were related, > > please > >> let me know for future reference. > >> > >> I am working with OCM, I have a single class that is being stored and > >> versioned in the repository (see below). My first error is when I try to > > get > >> an instance of this class by version (it works fine if I do just a > > getObject > >> (path) ). The error is the IncorrectPersistentClassException due to no > >> descriptor for nt:unstructured, which I don't think I am using. If I do > > need > >> this, why? And how should I define it? > >> > >> I also have an error when I try to checkin the object after updating > >> (checkout, getObject, modify it, update, save appear to work fine.). The > >> error is the RepositoryException caused by NoSuchItemStateException. I > > have > >> included what I think is the relevant information below. Using > > Jackrabbit > >> 1.4 with 1.4.2 core. I would certainly appreciate any input - on either > >> error. > >> > >> H. Wilson > >> > >> > >> ================= Class ======================== > >> > >> @Node (jcrMixinTypes="mix:versionable") > >> > >> public class SomeClass { > >> > >> @Field(path=true) private String path; > >> @Field private Date lastUpdate; > >> @Field private String someString; > >> > >> @Field private byte[] document; > >> @Field private double value; > >> @Field private String fullName; > >> @Field private long updateInterval; > >> @Collection (elementClassName=java.lang.String.class, > >> collectionConverter=MultiValueCollectionConverterImpl.class) private > >> java.util.Collection keywords; > >> > >> /** > >> > >> * Default constructor. > >> > >> */ > >> > >> public SomeClass() {} > >> > >> gets and sets... > >> > >> > >> > >> ================= CND File ======================== > >> > >> <mix="http://www.jcp.org/jcr/mix/1.0"> > >> > >> <nt="http://www.jcp.org/jcr/nt/1.0"> > >> > >> <ocm="http://jackrabbit.apache.org/ocm"> > >> > >> [ocm:discriminator] > >> > >> mixin > >> > >> - ocm:classname mandatory > >> > >> > >> > >> ================= Code Block - getObject (path, version) > >> ======================== > >> > >> SomeClass[] queryResults = null; > >> > >> QueryManager queryManager = ocm.getQueryManager(); > >> > >> Filter filter = queryManager.createFilter (SomeClass.class); > >> > >> filter.addLike ("fullName", fullNameString); > >> > >> Query query = queryManager.createQuery (filter); > >> > >> Collection<SomeClass> resultsCollection = > >> (Collection<SomeClass>)ocm.getObjects(query); //This works fine. > >> > >> queryResults = resultsCollection.toArray (new > >> SomeClass[resultsCollection.size()]); > >> > >> for (SomeClass result : queryResults ) { > >> > >> VersionIterator versionIterator = null; > >> > >> try { > >> > >> versionIterator = ocm.getAllVersions > > (result.getPath()); > >> > >> String versionNumber = null; > >> > >> if ( versionIterator.getSize() > 0 ) { > >> > >> while ( versionIterator.hasNext() ) { > >> > >> Version version = > >> (Version)versionIterator.next(); > >> > >> SomeClass versionedParam = > >> (SomeClass)ocm.getObject ( result.getPath(), version.getName()); //IT > >> DIES HERE > >> > >> ........ > >> > >> > >> ================= Exception ======================== > >> [java] [ INFO]:CollectionManager(296): Filter: jcr:like(@fullName, > >> 'AFullName') > >> [java] [ INFO]:CollectionManager(302): num results = 1 > >> [java] [ INFO]:CollectionManager(308): Result fullname: AFullName > >> [java] [DEBUG]:CollectionManager(324): num versions = 1 > >> [java] [DEBUG]:CollectionManager(335): fetching path: > >> /Path/To/SomeClass, version:jcr:rootVersion > >> [java] [ERROR]:CollectionManager(182): Node type: nt:unstructured has > > no > >> descriptor. > >> [java] > >> org.apache.jackrabbit.ocm.exception.IncorrectPersistentClassException: > > Node > >> type: nt:unstructured has no descriptor. > >> [java] at > >> > > > > org.apache.jackrabbit.ocm.mapper.impl.AbstractMapperImpl.getClassDescriptorByNodeType(AbstractMapperImpl.java:188) > >> [java] at > >> > > > > org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterImpl.getObject(ObjectConverterImpl.java:293) > >> [java] at > >> > > > > org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl.getObject(ObjectContentManagerImpl.java:313) > >> [java] at > >> CollectionManager.getSomeClassItems(CollectionManager.java:336) > >> [java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native > >> Method) > >> [java] at > >> > > > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > >> [java] at > >> > > > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > >> [java] at java.lang.reflect.Method.invoke(Method.java:597) > >> [java] at bsh.Reflect.invokeMethod(Unknown Source) > >> [java] at bsh.Reflect.invokeObjectMethod(Unknown Source) > >> [java] at bsh.Name.invokeMethod(Unknown Source) > >> [java] at bsh.BSHMethodInvocation.eval(Unknown Source) > >> [java] at bsh.BSHPrimaryExpression.eval(Unknown Source) > >> [java] at bsh.BSHPrimaryExpression.eval(Unknown Source) > >> [java] at bsh.Interpreter.eval(Unknown Source) > >> [java] at bsh.Interpreter.source(Unknown Source) > >> [java] at bsh.Interpreter.source(Unknown Source) > >> [java] at > > CollectionManager.initiateRepo(CollectionManager.java:490) > >> [java] at CollectionManager.<init>(CollectionManager.java:88) > >> [java] at > >> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) > >> [java] at > >> > > > > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) > >> [java] at > >> > > > > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) > >> > >> [java] ..... > >> > >> ================= Code Block - checkin (path) ======================== > >> > >> public void updateSomeClassItem ( SomeClass parameter ) { > >> > >> try { > >> > >> SomeClass temp = > > (SomeClass)ocm.getObject(parameter.getPath()); > >> > >> temp.setFullName ("NewName"); > >> > >> ocm.checkout ( temp.getPath()); > >> > >> ocm.update (temp); > >> > >> ocm.save(); > >> > >> ocm.checkin (temp.getPath()); //DIES HERE > >> > >> } > >> > >> catch (Exception e ) { > >> > >> logger.error ( "Error"); > >> > >> } > >> > >> } > >> > >> ================= Exception ======================== > >> [java] [DEBUG]:CollectionManager(266): Successfully checked out param: > >> /Path/To/SomeClass > >> [java] [DEBUG]:CollectionManager(268): updated > >> [java] [DEBUG]:CollectionManager(270): saved > >> [java] exception: > >> org.apache.jackrabbit.ocm.exception.RepositoryException: Impossible to > >> checkin the object /Path/To/SomeClass ; nested exception is > >> javax.jcr.RepositoryException: /Path/To/SomeClass: unable to update > > item.: > >> 86bb7b36-0ed3-44b5-bae9-132baa428c7e > >> [java] org.apache.jackrabbit.ocm.exception.RepositoryException: > >> Impossible to checkin the object /Path/To/SomeClass; nested exception is > >> javax.jcr.RepositoryException: /Path/To/SomeClass: unable to update > > item.: > >> 86bb7b36-0ed3-44b5-bae9-132baa428c7e > >> [java] javax.jcr.RepositoryException: /Path/To/SomeClass: unable to > >> update item.: 86bb7b36-0ed3-44b5-bae9-132baa428c7e: > >> 86bb7b36-0ed3-44b5-bae9-132baa428c7e > >> [java] at > >> org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1258) > >> [java] at > >> org.apache.jackrabbit.core.NodeImpl.checkin(NodeImpl.java:2961) > >> [java] at > >> > > > > org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl.checkin(ObjectContentManagerImpl.java:670) > >> [java] at > >> > > > > org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl.checkin(ObjectContentManagerImpl.java:655) > >> [java] at > >> CollectionManager.updateSomeClassItem(CollectionManager.java:271) > >> [java] at > > RemoteManager.updateSomeClassItem(RemoteManager.java:280) > >> [java] at Tests.main(Tests.java:91) > >> [java] Caused by: > >> org.apache.jackrabbit.core.state.NoSuchItemStateException: > >> 86bb7b36-0ed3-44b5-bae9-132baa428c7e > >> [java] at > >> > > > > org.apache.jackrabbit.core.state.SharedItemStateManager.getNodeReferences(SharedItemStateManager.java:330) > >> [java] at > >> > > > > org.apache.jackrabbit.core.state.SharedItemStateManager.updateReferences(SharedItemStateManager.java:1288) > >> [java] at > >> > > > > org.apache.jackrabbit.core.state.SharedItemStateManager$Update.begin(SharedItemStateManager.java:551) > >> [java] at > >> > > > > org.apache.jackrabbit.core.state.SharedItemStateManager.beginUpdate(SharedItemStateManager.java:843) > >> [java] at > >> > > > > org.apache.jackrabbit.core.state.SharedItemStateManager.update(SharedItemStateManager.java:873) > >> [java] at > >> > > > > org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:324) > >> [java] at > >> > > > > org.apache.jackrabbit.core.state.XAItemStateManager.update(XAItemStateManager.java:313) > >> [java] at > >> > > > > org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:300) > >> [java] at > >> > > > > org.apache.jackrabbit.core.state.SessionItemStateManager.update(SessionItemStateManager.java:317) > >> [java] at > >> org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1250) > >> [java] ... 6 more > >> [java] org.apache.jackrabbit.core.state.NoSuchItemStateException: > >> 86bb7b36-0ed3-44b5-bae9-132baa428c7e > >> [java] at > >> > > > > org.apache.jackrabbit.core.state.SharedItemStateManager.getNodeReferences(SharedItemStateManager.java:330) > >> [java] at > >> > > > > org.apache.jackrabbit.core.state.SharedItemStateManager.updateReferences(SharedItemStateManager.java:1288) > >> [java] at > >> > > > > org.apache.jackrabbit.core.state.SharedItemStateManager$Update.begin(SharedItemStateManager.java:551) > >> [java] at > >> > > > > org.apache.jackrabbit.core.state.SharedItemStateManager.beginUpdate(SharedItemStateManager.java:843) > >> [java] at > >> > > > > org.apache.jackrabbit.core.state.SharedItemStateManager.update(SharedItemStateManager.java:873) > >> [java] at > >> > > > > org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:324) > >> [java] at > >> > > > > org.apache.jackrabbit.core.state.XAItemStateManager.update(XAItemStateManager.java:313) > >> [java] at > >> > > > > org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:300) > >> [java] at > >> > > > > org.apache.jackrabbit.core.state.SessionItemStateManager.update(SessionItemStateManager.java:317) > >> [java] at > >> org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1250) > >> [java] at > >> org.apache.jackrabbit.core.NodeImpl.checkin(NodeImpl.java:2961) > >> [java] at > >> > > > > org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl.checkin(ObjectContentManagerImpl.java:670) > >> [java] at > >> > > > > org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl.checkin(ObjectContentManagerImpl.java:655) > >> [java] at > >> CollectionManager.updateSomeClassItem(CollectionManager.java:271) > >> [java] at > > RemoteManager.updateSomeClassItem(RemoteManager.java:280) > >> [java] at Tests.main(Tests.java:91) > >> > >> > >
