You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by Kaizer <Ka...@mastek.com> on 2007/10/24 13:55:36 UTC

Using Collections - OCM

Hi,

I have a class A which has a collection of objects of type B. I have made
the corresponding definitions in the mapping xml. However, If i create a
class C which extends B and save objects of type C in the list and then try
to retrieve them, I always get an instance of B as the ObjectConverterImpl
always creates a new instance of the "elementClassName" defined in the
mapping (which would be B in this case). How can i achieve the storage and
retrieval in this scenario?Would I require a custom CollectionConverter?

Thanks.

Regards
Kaizer
-- 
View this message in context: http://www.nabble.com/Using-Collections---OCM-tf4683858.html#a13384206
Sent from the Jackrabbit - Users mailing list archive at Nabble.com.


Re: Using Collections - OCM

Posted by Christophe Lombart <ch...@gmail.com>.
On 10/26/07, Kaizer <Ka...@mastek.com> wrote:
>
>
> I had missed out the "extends" attribute for the derived class. It works
> fine
> on adding it. Also, from where can i get more info on using the
> discriminator property?


from the code :-(  I would like to start the doc but I don't  know if the
new confluence stuff are ready.

Thanks!
> Kaizer
>
>
>
> Christophe Lombart wrote:
> >
> > The property discriminator contains the classname. Maybe the some
> > collection
> > descriptor are not using it correctly.
> > If you have no time, I will check this week-end otherwise if you found
> > something, you can send us a patch (in jira).
> >
> > Thanks,
> > Christophe
> >
> > On 10/26/07, Kaizer <Ka...@mastek.com> wrote:
> >>
> >>
> >> Thanks a lot! I am using the discriminator approach. In fact i was
> >> thinking
> >> of writing my own CollectionConverter wherein I would save the object
> by
> >> taking the class of the item being stored rather than from the
> >> "elementClassName" attribute. But the problem would be that while
> >> retrieving
> >> the object, I wouldnt have the class name to instantiate.
> >> Thanks again!
> >>
> >> Regards
> >> Kaizer
> >>
> >>
> >>
> >> Christophe Lombart wrote:
> >> >
> >> > Sorry for the delay I was very busy this week.
> >> >
> >> > Which inheritance strategy are you using ? Are you using the a
> >> > discriminator
> >> > or a different node type per Class ?
> >> >
> >> > There are 2 possibilities :
> >> >
> >> > 1/ Using a different node type per class in the hierarchy, here is a
> >> > example
> >> > from the unit test. The implement-descriptor is not mandatory.
> >> >
> >> > <class-descriptor
> >> > className="
> >> org.apache.jackrabbit.ocm.testmodel.inheritance.impl.FolderImpl"
> >> > jcrType="ocm:folderimpl"
> >> >
> >> > extend="
> >> org.apache.jackrabbit.ocm.testmodel.inheritance.impl.CmsObjectImpl"
> >> > discriminator="false"  >
> >> >   <implement-descriptor
> >> > interfaceName="org.apache.jackrabbit.ocm.testmodel.interfaces.Folder"
> >> > />
> >> >    <collection-descriptor fieldName="children" proxy="true"
> >> > autoUpdate="false"
> >> >
> >> > elementClassName="
> >> org.apache.jackrabbit.ocm.testmodel.inheritance.impl.CmsObjectImpl"
> >> >
> >> > collectionConverter="
> >>
> org.apache.jackrabbit.ocm.manager.collectionconverter.impl.NTCollectionConverterImpl
> >> "
> >> > />
> >> > </class-descriptor >
> >> >
> >> >
> >> > 2/ Using a discriminator (discriminator =true). It  can be used when
> >> you
> >> > are
> >> > using the same node type for the complete class hierarchy. There is
> no
> >> > unit
> >> > tests on collection-descriptor with a discriminator. So, I will write
> a
> >> > new
> >> > unit test for this use cases and I will give some feedback. So maybe
> >> there
> >> > are some bug for this kind of situation.
> >> >
> >> > Again sorry for the delay.
> >> >
> >> > br,
> >> > Christophe
> >> >
> >> > On 10/24/07, Kaizer <Ka...@mastek.com> wrote:
> >> >>
> >> >>
> >> >> Hi,
> >> >>
> >> >> I have a class A which has a collection of objects of type B. I have
> >> made
> >> >> the corresponding definitions in the mapping xml. However, If i
> create
> >> a
> >> >> class C which extends B and save objects of type C in the list and
> >> then
> >> >> try
> >> >> to retrieve them, I always get an instance of B as the
> >> >> ObjectConverterImpl
> >> >> always creates a new instance of the "elementClassName" defined in
> the
> >> >> mapping (which would be B in this case). How can i achieve the
> storage
> >> >> and
> >> >> retrieval in this scenario?Would I require a custom
> >> CollectionConverter?
> >> >>
> >> >> Thanks.
> >> >>
> >> >> Regards
> >> >> Kaizer
> >> >> --
> >> >> View this message in context:
> >> >>
> http://www.nabble.com/Using-Collections---OCM-tf4683858.html#a13384206
> >> >> Sent from the Jackrabbit - Users mailing list archive at Nabble.com.
> >> >>
> >> >>
> >> >
> >> >
> >>
> >> --
> >> View this message in context:
> >> http://www.nabble.com/Using-Collections---OCM-tf4683858.html#a13422253
> >> Sent from the Jackrabbit - Users mailing list archive at Nabble.com.
> >>
> >>
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/Using-Collections---OCM-tf4683858.html#a13423421
> Sent from the Jackrabbit - Users mailing list archive at Nabble.com.
>
>

Re: Using Collections - OCM

Posted by Kaizer <Ka...@mastek.com>.
I had missed out the "extends" attribute for the derived class. It works fine
on adding it. Also, from where can i get more info on using the
discriminator property?

Thanks!
Kaizer



Christophe Lombart wrote:
> 
> The property discriminator contains the classname. Maybe the some
> collection
> descriptor are not using it correctly.
> If you have no time, I will check this week-end otherwise if you found
> something, you can send us a patch (in jira).
> 
> Thanks,
> Christophe
> 
> On 10/26/07, Kaizer <Ka...@mastek.com> wrote:
>>
>>
>> Thanks a lot! I am using the discriminator approach. In fact i was
>> thinking
>> of writing my own CollectionConverter wherein I would save the object by
>> taking the class of the item being stored rather than from the
>> "elementClassName" attribute. But the problem would be that while
>> retrieving
>> the object, I wouldnt have the class name to instantiate.
>> Thanks again!
>>
>> Regards
>> Kaizer
>>
>>
>>
>> Christophe Lombart wrote:
>> >
>> > Sorry for the delay I was very busy this week.
>> >
>> > Which inheritance strategy are you using ? Are you using the a
>> > discriminator
>> > or a different node type per Class ?
>> >
>> > There are 2 possibilities :
>> >
>> > 1/ Using a different node type per class in the hierarchy, here is a
>> > example
>> > from the unit test. The implement-descriptor is not mandatory.
>> >
>> > <class-descriptor
>> > className="
>> org.apache.jackrabbit.ocm.testmodel.inheritance.impl.FolderImpl"
>> > jcrType="ocm:folderimpl"
>> >
>> > extend="
>> org.apache.jackrabbit.ocm.testmodel.inheritance.impl.CmsObjectImpl"
>> > discriminator="false"  >
>> >   <implement-descriptor
>> > interfaceName="org.apache.jackrabbit.ocm.testmodel.interfaces.Folder"
>> > />
>> >    <collection-descriptor fieldName="children" proxy="true"
>> > autoUpdate="false"
>> >
>> > elementClassName="
>> org.apache.jackrabbit.ocm.testmodel.inheritance.impl.CmsObjectImpl"
>> >
>> > collectionConverter="
>> org.apache.jackrabbit.ocm.manager.collectionconverter.impl.NTCollectionConverterImpl
>> "
>> > />
>> > </class-descriptor >
>> >
>> >
>> > 2/ Using a discriminator (discriminator =true). It  can be used when
>> you
>> > are
>> > using the same node type for the complete class hierarchy. There is no
>> > unit
>> > tests on collection-descriptor with a discriminator. So, I will write a
>> > new
>> > unit test for this use cases and I will give some feedback. So maybe
>> there
>> > are some bug for this kind of situation.
>> >
>> > Again sorry for the delay.
>> >
>> > br,
>> > Christophe
>> >
>> > On 10/24/07, Kaizer <Ka...@mastek.com> wrote:
>> >>
>> >>
>> >> Hi,
>> >>
>> >> I have a class A which has a collection of objects of type B. I have
>> made
>> >> the corresponding definitions in the mapping xml. However, If i create
>> a
>> >> class C which extends B and save objects of type C in the list and
>> then
>> >> try
>> >> to retrieve them, I always get an instance of B as the
>> >> ObjectConverterImpl
>> >> always creates a new instance of the "elementClassName" defined in the
>> >> mapping (which would be B in this case). How can i achieve the storage
>> >> and
>> >> retrieval in this scenario?Would I require a custom
>> CollectionConverter?
>> >>
>> >> Thanks.
>> >>
>> >> Regards
>> >> Kaizer
>> >> --
>> >> View this message in context:
>> >> http://www.nabble.com/Using-Collections---OCM-tf4683858.html#a13384206
>> >> Sent from the Jackrabbit - Users mailing list archive at Nabble.com.
>> >>
>> >>
>> >
>> >
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Using-Collections---OCM-tf4683858.html#a13422253
>> Sent from the Jackrabbit - Users mailing list archive at Nabble.com.
>>
>>
> 
> 

-- 
View this message in context: http://www.nabble.com/Using-Collections---OCM-tf4683858.html#a13423421
Sent from the Jackrabbit - Users mailing list archive at Nabble.com.


Re: Using Collections - OCM

Posted by Christophe Lombart <ch...@gmail.com>.
The property discriminator contains the classname. Maybe the some collection
descriptor are not using it correctly.
If you have no time, I will check this week-end otherwise if you found
something, you can send us a patch (in jira).

Thanks,
Christophe

On 10/26/07, Kaizer <Ka...@mastek.com> wrote:
>
>
> Thanks a lot! I am using the discriminator approach. In fact i was
> thinking
> of writing my own CollectionConverter wherein I would save the object by
> taking the class of the item being stored rather than from the
> "elementClassName" attribute. But the problem would be that while
> retrieving
> the object, I wouldnt have the class name to instantiate.
> Thanks again!
>
> Regards
> Kaizer
>
>
>
> Christophe Lombart wrote:
> >
> > Sorry for the delay I was very busy this week.
> >
> > Which inheritance strategy are you using ? Are you using the a
> > discriminator
> > or a different node type per Class ?
> >
> > There are 2 possibilities :
> >
> > 1/ Using a different node type per class in the hierarchy, here is a
> > example
> > from the unit test. The implement-descriptor is not mandatory.
> >
> > <class-descriptor
> > className="
> org.apache.jackrabbit.ocm.testmodel.inheritance.impl.FolderImpl"
> > jcrType="ocm:folderimpl"
> >
> > extend="
> org.apache.jackrabbit.ocm.testmodel.inheritance.impl.CmsObjectImpl"
> > discriminator="false"  >
> >   <implement-descriptor
> > interfaceName="org.apache.jackrabbit.ocm.testmodel.interfaces.Folder"
> > />
> >    <collection-descriptor fieldName="children" proxy="true"
> > autoUpdate="false"
> >
> > elementClassName="
> org.apache.jackrabbit.ocm.testmodel.inheritance.impl.CmsObjectImpl"
> >
> > collectionConverter="
> org.apache.jackrabbit.ocm.manager.collectionconverter.impl.NTCollectionConverterImpl
> "
> > />
> > </class-descriptor >
> >
> >
> > 2/ Using a discriminator (discriminator =true). It  can be used when you
> > are
> > using the same node type for the complete class hierarchy. There is no
> > unit
> > tests on collection-descriptor with a discriminator. So, I will write a
> > new
> > unit test for this use cases and I will give some feedback. So maybe
> there
> > are some bug for this kind of situation.
> >
> > Again sorry for the delay.
> >
> > br,
> > Christophe
> >
> > On 10/24/07, Kaizer <Ka...@mastek.com> wrote:
> >>
> >>
> >> Hi,
> >>
> >> I have a class A which has a collection of objects of type B. I have
> made
> >> the corresponding definitions in the mapping xml. However, If i create
> a
> >> class C which extends B and save objects of type C in the list and then
> >> try
> >> to retrieve them, I always get an instance of B as the
> >> ObjectConverterImpl
> >> always creates a new instance of the "elementClassName" defined in the
> >> mapping (which would be B in this case). How can i achieve the storage
> >> and
> >> retrieval in this scenario?Would I require a custom
> CollectionConverter?
> >>
> >> Thanks.
> >>
> >> Regards
> >> Kaizer
> >> --
> >> View this message in context:
> >> http://www.nabble.com/Using-Collections---OCM-tf4683858.html#a13384206
> >> Sent from the Jackrabbit - Users mailing list archive at Nabble.com.
> >>
> >>
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/Using-Collections---OCM-tf4683858.html#a13422253
> Sent from the Jackrabbit - Users mailing list archive at Nabble.com.
>
>

Re: Using Collections - OCM

Posted by Kaizer <Ka...@mastek.com>.
Thanks a lot! I am using the discriminator approach. In fact i was thinking
of writing my own CollectionConverter wherein I would save the object by
taking the class of the item being stored rather than from the
"elementClassName" attribute. But the problem would be that while retrieving
the object, I wouldnt have the class name to instantiate. 
Thanks again!

Regards
Kaizer



Christophe Lombart wrote:
> 
> Sorry for the delay I was very busy this week.
> 
> Which inheritance strategy are you using ? Are you using the a
> discriminator
> or a different node type per Class ?
> 
> There are 2 possibilities :
> 
> 1/ Using a different node type per class in the hierarchy, here is a
> example
> from the unit test. The implement-descriptor is not mandatory.
> 
> <class-descriptor
> className="org.apache.jackrabbit.ocm.testmodel.inheritance.impl.FolderImpl"
> jcrType="ocm:folderimpl"
> 
> extend="org.apache.jackrabbit.ocm.testmodel.inheritance.impl.CmsObjectImpl"
> discriminator="false"  >
>   <implement-descriptor
> interfaceName="org.apache.jackrabbit.ocm.testmodel.interfaces.Folder"
> />
>    <collection-descriptor fieldName="children" proxy="true"
> autoUpdate="false"
> 		
> elementClassName="org.apache.jackrabbit.ocm.testmodel.inheritance.impl.CmsObjectImpl"
> 		
> collectionConverter="org.apache.jackrabbit.ocm.manager.collectionconverter.impl.NTCollectionConverterImpl"
> />
> </class-descriptor >	
> 
> 
> 2/ Using a discriminator (discriminator =true). It  can be used when you
> are
> using the same node type for the complete class hierarchy. There is no
> unit
> tests on collection-descriptor with a discriminator. So, I will write a
> new
> unit test for this use cases and I will give some feedback. So maybe there
> are some bug for this kind of situation.
> 
> Again sorry for the delay.
> 
> br,
> Christophe
> 
> On 10/24/07, Kaizer <Ka...@mastek.com> wrote:
>>
>>
>> Hi,
>>
>> I have a class A which has a collection of objects of type B. I have made
>> the corresponding definitions in the mapping xml. However, If i create a
>> class C which extends B and save objects of type C in the list and then
>> try
>> to retrieve them, I always get an instance of B as the
>> ObjectConverterImpl
>> always creates a new instance of the "elementClassName" defined in the
>> mapping (which would be B in this case). How can i achieve the storage
>> and
>> retrieval in this scenario?Would I require a custom CollectionConverter?
>>
>> Thanks.
>>
>> Regards
>> Kaizer
>> --
>> View this message in context:
>> http://www.nabble.com/Using-Collections---OCM-tf4683858.html#a13384206
>> Sent from the Jackrabbit - Users mailing list archive at Nabble.com.
>>
>>
> 
> 

-- 
View this message in context: http://www.nabble.com/Using-Collections---OCM-tf4683858.html#a13422253
Sent from the Jackrabbit - Users mailing list archive at Nabble.com.


Re: Using Collections - OCM

Posted by Christophe Lombart <ch...@gmail.com>.
Sorry for the delay I was very busy this week.

Which inheritance strategy are you using ? Are you using the a discriminator
or a different node type per Class ?

There are 2 possibilities :

1/ Using a different node type per class in the hierarchy, here is a example
from the unit test. The implement-descriptor is not mandatory.

<class-descriptor
className="org.apache.jackrabbit.ocm.testmodel.inheritance.impl.FolderImpl"
jcrType="ocm:folderimpl"

extend="org.apache.jackrabbit.ocm.testmodel.inheritance.impl.CmsObjectImpl"
discriminator="false"  >
  <implement-descriptor
interfaceName="org.apache.jackrabbit.ocm.testmodel.interfaces.Folder"
/>
   <collection-descriptor fieldName="children" proxy="true" autoUpdate="false"
		
elementClassName="org.apache.jackrabbit.ocm.testmodel.inheritance.impl.CmsObjectImpl"
		
collectionConverter="org.apache.jackrabbit.ocm.manager.collectionconverter.impl.NTCollectionConverterImpl"
/>
</class-descriptor >	


2/ Using a discriminator (discriminator =true). It  can be used when you are
using the same node type for the complete class hierarchy. There is no unit
tests on collection-descriptor with a discriminator. So, I will write a new
unit test for this use cases and I will give some feedback. So maybe there
are some bug for this kind of situation.

Again sorry for the delay.

br,
Christophe

On 10/24/07, Kaizer <Ka...@mastek.com> wrote:
>
>
> Hi,
>
> I have a class A which has a collection of objects of type B. I have made
> the corresponding definitions in the mapping xml. However, If i create a
> class C which extends B and save objects of type C in the list and then
> try
> to retrieve them, I always get an instance of B as the ObjectConverterImpl
> always creates a new instance of the "elementClassName" defined in the
> mapping (which would be B in this case). How can i achieve the storage and
> retrieval in this scenario?Would I require a custom CollectionConverter?
>
> Thanks.
>
> Regards
> Kaizer
> --
> View this message in context:
> http://www.nabble.com/Using-Collections---OCM-tf4683858.html#a13384206
> Sent from the Jackrabbit - Users mailing list archive at Nabble.com.
>
>