jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Christophe Lombart" <christophe.lomb...@gmail.com>
Subject Re: OCM exceptions: IncorrectPersistentClassException & RepositoryException caused by NoSuchItemStateException
Date Tue, 05 Aug 2008 21:02:58 GMT
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, <wilsonh@randdss.com> 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"
> <christophe.lombart@gmail.com> 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 <wilsonh@randdss.com> 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)
> >>
> >>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message