I am building a test application against OCM.  I have the following
classes that are annotated for OCM.  The problem is that when I update and
version the root object PressRelease the Bean Author is versioned to
nt:versionedChild.  While the OCM is checking for node type compatibility
it is throwing the following exception.  It looks like the versionedChild
is not handled correctly.  Any suggestions?

I also attempted to retrieve the version based on the version name for the
rootVersion but also trapped. From a Version object how should I access
each of the versioned entries?

Thanks
Wes

@Node (jcrMixinTypes="mix:versionable")
public class PressRelease
{
        @Field(path=true) String path;
        @Field String title;
        @Field Date pubDate;
        @Field String content;
        @Bean Author author;
        @Collection (elementClassName=Comment.class) List<Comment> comments = 
new
ArrayList<Comment>();

        public String getPath() {
                return path;
        }
        public void setPath(String path) {
                this.path = path;
        }
        public String getContent() {
                return content;
        }
        public void setContent(String content) {
                this.content = content;
        }
        public Date getPubDate() {
                return pubDate;
        }
        public void setPubDate(Date pubDate) {
                this.pubDate = pubDate;
        }
        public String getTitle() {
                return title;
        }
        public void setTitle(String title) {
                this.title = title;
        }
        public Author getAuthor() {
                return author;
        }
        public void setAuthor(Author author) {
                this.author = author;
        }
        public List<Comment> getComments() {
                return comments;
        }
        public void setComments(List<Comment> comments) {
                this.comments = comments;
        }


}

@Node (jcrMixinTypes="mix:versionable")
public class Author {

        @Field(path=true) String path;
        @Field String name;


        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public String getPath() {
                return path;
        }
        public void setPath(String path) {
                this.path = path;
        }

}

MAIN

        while (versionIterator.hasNext())
        {
            Version version = (Version) versionIterator.next();
            System.out.println("version found : "+ version.getName() + " - " +
                                  version.getPath() + " - " + 
version.getCreated().getTime());


            if (!version.getName().equals("jcr:rootVersion"))
            {

//        Get the object matching to the first version
            pressRelease = (PressRelease)
ocm.getObject("/newtutorial",version.getName());


                System.out.println("PressRelease title : " + 
pressRelease.getTitle());
                System.out.println("             author: " +
pressRelease.getAuthor().getName());
                System.out.println("            content: " + 
pressRelease.getContent());
                List comments = pressRelease.getComments();
                Iterator iterator = comments.iterator();
                while (iterator.hasNext())
                {
                        comment = (Comment) iterator.next();
                        System.out.println("Comment : <" + comment.getData() + 
">" +
comment.getText());
                }
            }
        }


CONSOLE
version found : jcr:rootVersion -
/jcr:system/jcr:versionStorage/fc/0b/fd/fc0bfd89-c487-4fbe-930f-d837e5dfed79/jcr:rootVersion
- Thu Feb 28 15:54:42 EST 2008
version found : 1.0 -
/jcr:system/jcr:versionStorage/fc/0b/fd/fc0bfd89-c487-4fbe-930f-d837e5dfed79/1.0
- Thu Feb 28 15:54:59 EST 2008
Exception in thread "main"
org.apache.jackrabbit.ocm.exception.ObjectContentManagerException: Cannot
map object of type 'com..pc.repository.Author'. Node type
'nt:versionedChild' does not match descriptor node type 'nt:unstructured'
        at
org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterImpl.checkCompatiblePrimaryNodeTypes(ObjectConverterImpl.java:552)
        at
org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterImpl.getObject(ObjectConverterImpl.java:361)
        at
org.apache.jackrabbit.ocm.manager.beanconverter.impl.DefaultBeanConverterImpl.getObject(DefaultBeanConverterImpl.java:80)
        at
org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterImpl.retrieveBeanField(ObjectConverterImpl.java:666)
        at
org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterImpl.retrieveBeanFields(ObjectConverterImpl.java:621)
        at
org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterImpl.getObject(ObjectConverterImpl.java:309)
        at
org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl.getObject(ObjectContentManagerImpl.java:313)
        at com.pc.repository.Main.main(Main.java:345)



Reply via email to