You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by "Boni Gopalan (BioImagene)" <Bo...@bioimagene.com> on 2008/09/24 14:00:39 UTC
OCM:Mapping List
Hi : I need to map a collection by definition is Collection<Object>.
However it will be holding only Types convertible by AtomicTypeConverter
(Or UndefinedTypeConverterImpl). How can I specify that to map any
element from the Collection OCM need to Use UndefinedTypeConverterImpl?
Boni Gopalan
Manager Engineering
BioImagene, Pune
+91-206-609-6579(O)
+91-992-369-9356(C)
Re: OCM:Mapping List
Posted by Christophe Lombart <ch...@gmail.com>.
On Wed, Sep 24, 2008 at 15:38, Boni Gopalan (BioImagene) <
Boni.G@bioimagene.com> wrote:
> Class Foo{
> List<Object> children;
> }
>
> I have mapped it as :
>
> <class-descriptor className="Foo"
> jcrType="nt:unstructured">
> <collection-descriptor fieldName="attrParameters"
> jcrName="attrParameters" proxy="false"
>
> elementClassName="java.lang.String"
> jcrSameNameSiblings="false"/>
>
> <collection-descriptor fieldName="children"
> jcrName="children"
> proxy="false"
>
> elementClassName="java.lang.Object"
> jcrSameNameSiblings="false" collectionConverter
> ="org.apache.jackrabbit.ocm.manager.collectionconverter.impl.DefaultColl
> ectionConverterImpl"/>
> </class-descriptor>
>
> The List<Object> children : Can Hold only simple types : String,
> Integer, Long etc. a finite number of classes I know.
>
almost all collection converters are supported only collection of persistent
classes but I think the converter "MultiValueCollectionConverterImpl" can
help in you case.
Is it not something like the unit test
DigesterMultiValueCollectionConverterImplTest ?
http://svn.apache.org/repos/asf/jackrabbit/trunk/jackrabbit-ocm/src/test/java/org/apache/jackrabbit/ocm/manager/collectionconverter/DigesterMultiValueCollectionConverterImplTest.java
>
> The conversion fails runtime , when the Object is java.lang.String
>
> I tried with the MultiValueConverter also; It fails with the same
> results
>
> The stacktrace is as below:
>
> at
> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java
> :980)
> Caused by:
> org.apache.jackrabbit.ocm.exception.IncorrectPersistentClassException:
> Class of type: java.lang.String has no descriptor.
> at
> org.apache.jackrabbit.ocm.mapper.impl.AbstractMapperImpl.getClassDescrip
> torByClass(AbstractMapperImpl.java:177)
> at
> org.apache.jackrabbit.ocm.manager.collectionconverter.impl.DefaultCollec
> tionConverterImpl.doInsertCollection(DefaultCollectionConverterImpl.java
> :116)
> at
> org.apache.jackrabbit.ocm.manager.collectionconverter.impl.AbstractColle
> ctionConverterImpl.insertCollection(AbstractCollectionConverterImpl.java
> :80)
> at
> org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterIm
> pl.insertCollectionFields(ObjectConverterImpl.java:846)
> at
> org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterIm
> pl.insert(ObjectConverterImpl.java:225)
> at
> org.apache.jackrabbit.ocm.manager.collectionconverter.impl.DefaultCollec
> tionConverterImpl.insertManageableCollection(DefaultCollectionConverterI
> mpl.java:147)
> at
> org.apache.jackrabbit.ocm.manager.collectionconverter.impl.DefaultCollec
> tionConverterImpl.doInsertCollection(DefaultCollectionConverterImpl.java
> :119)
> at
> org.apache.jackrabbit.ocm.manager.collectionconverter.impl.AbstractColle
> ctionConverterImpl.insertCollection(AbstractCollectionConverterImpl.java
> :80)
> at
> org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterIm
> pl.insertCollectionFields(ObjectConverterImpl.java:846)
> at
> org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterIm
> pl.insert(ObjectConverterImpl.java:225)
> at
> org.apache.jackrabbit.ocm.manager.beanconverter.impl.DefaultBeanConverte
> rImpl.insert(DefaultBeanConverterImpl.java:53)
> at
> org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterIm
> pl.insertBeanFields(ObjectConverterImpl.java:784)
> at
> org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterIm
> pl.insert(ObjectConverterImpl.java:224)
> at
> org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterIm
> pl.insert(ObjectConverterImpl.java:153)
> at
> org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl.insert(O
> bjectContentManagerImpl.java:406)
> at
> com.bioimagene.iii.dms.pojo.PersistenceDelegateXMLNode.saveItem(Persiste
> nceDelegateXMLNode.java:134)
>
> Thanks
> Boni
>
> -----Original Message-----
> From: Christophe Lombart [mailto:christophe.lombart@gmail.com]
> Sent: 24 September 2008 18:04
> To: users@jackrabbit.apache.org
> Subject: Re: OCM:Mapping List<Object>
>
> Please, give me more details on your desired mapping. Do you want to
> have a
> Collection of primitive types ? Do you want to map to multi val property
> ?
>
>
> Christophe
>
>
> On Wed, Sep 24, 2008 at 14:00, Boni Gopalan (BioImagene) <
> Boni.G@bioimagene.com> wrote:
>
> > Hi : I need to map a collection by definition is Collection<Object>.
> > However it will be holding only Types convertible by
> AtomicTypeConverter
> > (Or UndefinedTypeConverterImpl). How can I specify that to map any
> > element from the Collection OCM need to Use
> UndefinedTypeConverterImpl?
> >
> >
> >
> > Boni Gopalan
> > Manager Engineering
> > BioImagene, Pune
> >
> > +91-206-609-6579(O)
> > +91-992-369-9356(C)
> >
> >
> >
> >
>
RE: OCM:Mapping List
Posted by "Boni Gopalan (BioImagene)" <Bo...@bioimagene.com>.
Class Foo{
List<Object> children;
}
I have mapped it as :
<class-descriptor className="Foo"
jcrType="nt:unstructured">
<collection-descriptor fieldName="attrParameters"
jcrName="attrParameters" proxy="false"
elementClassName="java.lang.String"
jcrSameNameSiblings="false"/>
<collection-descriptor fieldName="children"
jcrName="children"
proxy="false"
elementClassName="java.lang.Object"
jcrSameNameSiblings="false" collectionConverter
="org.apache.jackrabbit.ocm.manager.collectionconverter.impl.DefaultColl
ectionConverterImpl"/>
</class-descriptor>
The List<Object> children : Can Hold only simple types : String,
Integer, Long etc. a finite number of classes I know.
The conversion fails runtime , when the Object is java.lang.String
I tried with the MultiValueConverter also; It fails with the same
results
The stacktrace is as below:
at
org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java
:980)
Caused by:
org.apache.jackrabbit.ocm.exception.IncorrectPersistentClassException:
Class of type: java.lang.String has no descriptor.
at
org.apache.jackrabbit.ocm.mapper.impl.AbstractMapperImpl.getClassDescrip
torByClass(AbstractMapperImpl.java:177)
at
org.apache.jackrabbit.ocm.manager.collectionconverter.impl.DefaultCollec
tionConverterImpl.doInsertCollection(DefaultCollectionConverterImpl.java
:116)
at
org.apache.jackrabbit.ocm.manager.collectionconverter.impl.AbstractColle
ctionConverterImpl.insertCollection(AbstractCollectionConverterImpl.java
:80)
at
org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterIm
pl.insertCollectionFields(ObjectConverterImpl.java:846)
at
org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterIm
pl.insert(ObjectConverterImpl.java:225)
at
org.apache.jackrabbit.ocm.manager.collectionconverter.impl.DefaultCollec
tionConverterImpl.insertManageableCollection(DefaultCollectionConverterI
mpl.java:147)
at
org.apache.jackrabbit.ocm.manager.collectionconverter.impl.DefaultCollec
tionConverterImpl.doInsertCollection(DefaultCollectionConverterImpl.java
:119)
at
org.apache.jackrabbit.ocm.manager.collectionconverter.impl.AbstractColle
ctionConverterImpl.insertCollection(AbstractCollectionConverterImpl.java
:80)
at
org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterIm
pl.insertCollectionFields(ObjectConverterImpl.java:846)
at
org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterIm
pl.insert(ObjectConverterImpl.java:225)
at
org.apache.jackrabbit.ocm.manager.beanconverter.impl.DefaultBeanConverte
rImpl.insert(DefaultBeanConverterImpl.java:53)
at
org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterIm
pl.insertBeanFields(ObjectConverterImpl.java:784)
at
org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterIm
pl.insert(ObjectConverterImpl.java:224)
at
org.apache.jackrabbit.ocm.manager.objectconverter.impl.ObjectConverterIm
pl.insert(ObjectConverterImpl.java:153)
at
org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl.insert(O
bjectContentManagerImpl.java:406)
at
com.bioimagene.iii.dms.pojo.PersistenceDelegateXMLNode.saveItem(Persiste
nceDelegateXMLNode.java:134)
Thanks
Boni
-----Original Message-----
From: Christophe Lombart [mailto:christophe.lombart@gmail.com]
Sent: 24 September 2008 18:04
To: users@jackrabbit.apache.org
Subject: Re: OCM:Mapping List<Object>
Please, give me more details on your desired mapping. Do you want to
have a
Collection of primitive types ? Do you want to map to multi val property
?
Christophe
On Wed, Sep 24, 2008 at 14:00, Boni Gopalan (BioImagene) <
Boni.G@bioimagene.com> wrote:
> Hi : I need to map a collection by definition is Collection<Object>.
> However it will be holding only Types convertible by
AtomicTypeConverter
> (Or UndefinedTypeConverterImpl). How can I specify that to map any
> element from the Collection OCM need to Use
UndefinedTypeConverterImpl?
>
>
>
> Boni Gopalan
> Manager Engineering
> BioImagene, Pune
>
> +91-206-609-6579(O)
> +91-992-369-9356(C)
>
>
>
>
Re: OCM:Mapping List
Posted by Christophe Lombart <ch...@gmail.com>.
Please, give me more details on your desired mapping. Do you want to have a
Collection of primitive types ? Do you want to map to multi val property ?
Christophe
On Wed, Sep 24, 2008 at 14:00, Boni Gopalan (BioImagene) <
Boni.G@bioimagene.com> wrote:
> Hi : I need to map a collection by definition is Collection<Object>.
> However it will be holding only Types convertible by AtomicTypeConverter
> (Or UndefinedTypeConverterImpl). How can I specify that to map any
> element from the Collection OCM need to Use UndefinedTypeConverterImpl?
>
>
>
> Boni Gopalan
> Manager Engineering
> BioImagene, Pune
>
> +91-206-609-6579(O)
> +91-992-369-9356(C)
>
>
>
>