You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by "Aleshko, Oleg" <o....@itransition.com> on 2009/04/25 13:40:10 UTC

OCM and indexing

Hi, guys!

Can you please point me to an example of how to map binary content so that it will be indexed with lucene.
Currently I'm trying to do it for List<Object> or byte[] field, however neither of it works.

@Node(jcrMixinTypes = "mix:referenceable,mix:versionable,mix:lockable")
public class ContentItem1 implements Serializable {
    private String uuid;
    private String path;

    @Field(uuid = true)
    public String getUuid() {
        return uuid;
    }

    public void setUuid(String uuid) {
        this.uuid = uuid;
    }

    @Field(path = true)
    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    @Bean
    protected ContentItem1.DataContent1 dataContent;
    @Field
    protected String href;

    public DataContent1 getDataContent() {
        return dataContent;
    }

    public void setDataContent(DataContent1 dataContent) {
        this.dataContent = dataContent;
    }

    public String getHref() {
        return href;
    }

    public void setHref(String href) {
        this.href = href;
    }

    @Node(jcrType = "nt:resource")
    public static class DataContent1 {
        @Field(jcrName = "jcr:mimeType")
        private String mimeType;
        @Field(jcrName = "jcr:lastModified")
        private Calendar lastModified;
//list returned by JAXB, converter gets plain text from it and returns byte[]
//        @Collection(collectionConverter = AnyTypeCollectionConverter.class, jcrElementName = "jcr:data")
//        protected List<Object> content;
//        public List<Object> getContent() {
//            return content;
//        }
//
//        public void setContent(List<Object> content) {
//            this.content = content;
//        }

        @Field(jcrName = "jcr:data")
        private byte[] content;

        public byte[] getContent() {
            return content;
        }

        public void setContent(byte[] content) {
            this.content = content;
        }

        public String getMimeType() {
            return mimeType;
        }

        public void setMimeType(String mimeType) {
            this.mimeType = mimeType;
        }

        public Calendar getLastModified() {
            return lastModified;
        }

        public void setLastModified(Calendar lastModified) {
            this.lastModified = lastModified;
        }

    }
}

org.apache.jackrabbit.ocm.exception.JcrMappingException: Unknown mixin type null for mapped class class ee.bns.editorial.domain.newsml_1_2.ContentItem1$DataContent1; nested exception is javax.jcr.nodetype.NoSuchNodeTypeException: {http://jackrabbit.apache.org/ocm}discriminator
javax.jcr.nodetype.NoSuchNodeTypeException: {http://jackrabbit.apache.org/ocm}discriminator
                at org.apache.jackrabbit.core.nodetype.NodeTypeRegistry.getEffectiveNodeType(NodeTypeRegistry.java:1019)
                at org.apache.jackrabbit.core.nodetype.NodeTypeRegistry.getEffectiveNodeType(NodeTypeRegistry.java:469)
                at org.apache.jackrabbit.core.nodetype.NodeTypeManagerImpl.getNodeType(NodeTypeManagerImpl.java:186)
                at org.apache.jackrabbit.core.NodeImpl.addMixin(NodeImpl.java:1023)
                at org.apache.jackrabbit.core.NodeImpl.addMixin(NodeImpl.java:2784)
                at org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterImpl.addDiscriminatorProperty(ObjectConverterImpl.java:245)
                at org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterImpl.insert(ObjectConverterImpl.java:214)
                at org.apache.jackrabbit.ocm.manager.beanconverter.impl.DefaultBeanConverterImpl.insert(DefaultBeanConverterImpl.java:53)
                at org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterImpl.insertBeanFields(ObjectConverterImpl.java:844)
                at org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterImpl.insert(ObjectConverterImpl.java:226)
                at org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterImpl.insert(ObjectConverterImpl.java:155)
                at org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl.insert(ObjectContentManagerImpl.java:406)



Thanks in advance.