You are viewing a plain text version of this content. The canonical link for it is here.
Posted to graffito-dev@incubator.apache.org by ruchi goel <Ru...@Sun.COM> on 2007/02/08 12:40:33 UTC
[Fwd: Re: creating custom node types inheriting from nt:folder using
jcr mapping]
Re: [Fwd: Re: creating custom node types inheriting from nt:folder
using jcr mapping]
Posted by ruchi goel <Ru...@Sun.COM>.
Christophe Lombart wrote:
> Hi Ruchi,
>
> I just commited a new unit test. it contains a mapping for nt:folder &
> nt:file.
> This is the first draft :-) . I'm going to work on it. I will add more
> unit tests.
> See the mapping file : jcrmapping-jcrnodetypes.xml
> See the unit test : PersistenceManagerJcrNodeTypeTest
>
> The current ocm implementation forces to use an extra class for the
> jcr:resource.
> This should be nice to map directly into the file class attributes.
>
> Let me know if you need more help
>
> br,
> Christophe
Thanks I will try this. This requires new updated source code , right.
So, I need to checkout the entire graffito source and build the jcr
mapping layer.
-Ruchi
>
> On 2/8/07, ruchi goel <Ru...@sun.com> wrote:
>>
>>
>>
>> ---------- Forwarded message ----------
>> From: ruchi goel <Ru...@Sun.COM>
>> To: christophe.lombart@gmail.com
>> Date: Thu, 08 Feb 2007 14:38:50 +0530
>> Subject: Re: creating custom node types inheriting from nt:folder
>> using jcr mapping
>> Thanks. Please find attached model classes . I do not have a clearly
>> isolated unit test case, since I have created a netbeans project where I
>> am using this.
>> But these are the two functionalities I am trying to achieve :
>>
>> public void testSaveFolder(FolderModelService folderService){
>>
>> //Test Save
>>
>> //insert an Ad in repository
>> Folder folder = new Folder();
>> folder.setPath("/cms/folder2");
>> Collection content = new ArrayList();
>> content.add(new Folder("subfolder2"));
>> folder.setChildren(content);
>> folderService.saveFolder(folder);
>>
>>
>> }
>> public void testReadFolder(FolderModelService folderService){
>> Folder folder = (Folder)folderService.getFolder("/cms/folder2");
>> System.out.print("folder Info : " + folder.getCreationDate());
>> }
>>
>>
>>
>> Thanks,
>> Ruchi
>> Christophe Lombart wrote:
>> > Hi Ruchi,
>> > e
>> > It seems to be ok. Send me your unit tests and you model classes.
>> > It is a good exemple to add and I will have time to help you this
>> > afternoon.
>> >
>> >
>> > br,
>> > Christophe
>> >
>> >
>> >
>> >
>> > On 2/8/07, ruchi goel <Ru...@sun.com> wrote:
>> >>
>> >> Hi,
>> >> I want to use jcr mapping layer for creating custom node type
>> "folder"
>> >> which should inherit from "nt:folder"
>> >>
>> >> I have following custom_nodetype.xml
>> >> <nodeTypes xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
>> >> xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:rep="internal"
>> >> xmlns:mix="http://www.jcp.org/jcr/mix/1.0">
>> >> <nodeType name="folder" isMixin="false"
>> >> hasOrderableChildNodes="false" primaryItemName="">
>> >> <supertypes>
>> >> <supertype>nt:folder</supertype>
>> >> </supertypes> </nodeType>
>> >>
>> >> </nodeTypes>
>> >>
>> >>
>> >> I have following jcrmapping descriptor
>> >>
>> >> <class-descriptor
>> className="com.sun.portal.cms.model.HeirarchyContent"
>> >> jcrNodeType="nt:hierarchyNode" discriminator="false" >
>> >> <!-- Field-descriptor is used to map simple attributes to jcr
>> >> property -->
>> >> <field-descriptor fieldName="path" path="true" />
>> >> <field-descriptor fieldName="creationDate"
>> jcrName="jcr:created" />
>> >> />
>> >> </class-descriptor>
>> >>
>> >> <class-descriptor className="com.sun.portal.cms.model.Folder"
>> >> jcrNodeType="folder"
>> >> extend="com.sun.portal.cms.model.HeirarchyContent"
>> >> discriminator="false"
>> >> >
>> >> <!-- Field-descriptor is used to map simple attributes to jcr
>> >> property -->
>> >> <field-descriptor fieldName="path" path="true" />
>> >> />
>> >> <collection-descriptor fieldName="children" proxy="false"
>> >> jcrNodeType="nt:hierarchyNode"
>> >>
>> >> elementClassName="com.sun.portal.cms.model.HeirarchyContent"
>> >>
>> >> collectionConverter="
>> >>
>> org.apache.portals.graffito.jcr.persistence.collectionconverter.impl.NTCollectionConverterImpl
>>
>> >>
>> >> "
>> >> />
>> >> </class-descriptor>
>> >>
>> >>
>> >>
>> >> The problem is I am able to retrieve the items which are
>> properties but
>> >> I do not see any child node definitions in folder. Ideally since
>> folder
>> >> is inheriting from nt:folder , it should get a childnode
>> definition of
>> >> type nt:heirrarchynodeType
>> >>
>> >> Is there anything I am missing ?
>> >> Checked out PersistenceAutoTest.java but it uses all custom nodetypes
>> >> which are inherited from nt:base and so , it has
>> childnodedefintions in
>> >> custom node type definition.
>> >>
>> >> Help appreciated.
>> >> Thanks,
>> >> Ruchi
>> >>
>> >
>>
>>
>> /*
>> * HeirarchyContent.java
>> *
>> * Created on February 7, 2007, 2:10 PM
>> *
>> * To change this template, choose Tools | Template Manager
>> * and open the template in the editor.
>> */
>>
>> package com.sun.portal.cms.model;
>> import java.util.Date;
>> /**
>> *
>> * @author ruchi goel
>> */
>> public class HeirarchyContent {
>> String path;
>> Date creationDate;
>> /** Creates a new instance of HeirarchyContent */
>> public HeirarchyContent() {
>> }
>> public Date getCreationDate(){
>> return creationDate;
>> }
>> public void setPath(String path){
>> this.path = path;
>> }
>> public void setCreationDate(Date creationDate){
>> this.creationDate = creationDate;
>> }
>> public String getPath(){
>> return path;
>> }
>>
>> }
>>
>> /*
>> * Folder.java
>> *
>> * Created on February 7, 2007, 10:45 AM
>> *
>> * To change this template, choose Tools | Template Manager
>> * and open the template in the editor.
>> */
>>
>> package com.sun.portal.cms.model;
>> import java.util.Collection;
>> import java.util.ArrayList;
>>
>>
>> /**
>> *
>> * @author ruchi goel
>> */
>> public class Folder extends HeirarchyContent {
>>
>> Collection children;
>> /** Creates a new instance of Folder */
>> public Folder() {
>> } ;
>>
>> public Folder(String path) {
>> this.path = path;
>> }
>> public void setChildren(Collection children){
>> this.children = children;
>> }
>> public Collection getChildren(){
>> return children;
>> }
>> public void addChild(HeirarchyContent child)
>> {
>> if (children == null)
>> {
>> children = new ArrayList();
>> }
>>
>> children.add(child);
>> }
>>
>> }
>>
>>
Re: [Fwd: Re: creating custom node types inheriting from nt:folder using jcr mapping]
Posted by Christophe Lombart <ch...@gmail.com>.
Hi Ruchi,
I just commited a new unit test. it contains a mapping for nt:folder & nt:file.
This is the first draft :-) . I'm going to work on it. I will add more
unit tests.
See the mapping file : jcrmapping-jcrnodetypes.xml
See the unit test : PersistenceManagerJcrNodeTypeTest
The current ocm implementation forces to use an extra class for the
jcr:resource.
This should be nice to map directly into the file class attributes.
Let me know if you need more help
br,
Christophe
On 2/8/07, ruchi goel <Ru...@sun.com> wrote:
>
>
>
> ---------- Forwarded message ----------
> From: ruchi goel <Ru...@Sun.COM>
> To: christophe.lombart@gmail.com
> Date: Thu, 08 Feb 2007 14:38:50 +0530
> Subject: Re: creating custom node types inheriting from nt:folder using jcr mapping
> Thanks. Please find attached model classes . I do not have a clearly
> isolated unit test case, since I have created a netbeans project where I
> am using this.
> But these are the two functionalities I am trying to achieve :
>
> public void testSaveFolder(FolderModelService folderService){
>
> //Test Save
>
> //insert an Ad in repository
> Folder folder = new Folder();
> folder.setPath("/cms/folder2");
> Collection content = new ArrayList();
> content.add(new Folder("subfolder2"));
> folder.setChildren(content);
> folderService.saveFolder(folder);
>
>
> }
> public void testReadFolder(FolderModelService folderService){
> Folder folder = (Folder)folderService.getFolder("/cms/folder2");
> System.out.print("folder Info : " + folder.getCreationDate());
> }
>
>
>
> Thanks,
> Ruchi
> Christophe Lombart wrote:
> > Hi Ruchi,
> > e
> > It seems to be ok. Send me your unit tests and you model classes.
> > It is a good exemple to add and I will have time to help you this
> > afternoon.
> >
> >
> > br,
> > Christophe
> >
> >
> >
> >
> > On 2/8/07, ruchi goel <Ru...@sun.com> wrote:
> >>
> >> Hi,
> >> I want to use jcr mapping layer for creating custom node type "folder"
> >> which should inherit from "nt:folder"
> >>
> >> I have following custom_nodetype.xml
> >> <nodeTypes xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
> >> xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:rep="internal"
> >> xmlns:mix="http://www.jcp.org/jcr/mix/1.0">
> >> <nodeType name="folder" isMixin="false"
> >> hasOrderableChildNodes="false" primaryItemName="">
> >> <supertypes>
> >> <supertype>nt:folder</supertype>
> >> </supertypes> </nodeType>
> >>
> >> </nodeTypes>
> >>
> >>
> >> I have following jcrmapping descriptor
> >>
> >> <class-descriptor className="com.sun.portal.cms.model.HeirarchyContent"
> >> jcrNodeType="nt:hierarchyNode" discriminator="false" >
> >> <!-- Field-descriptor is used to map simple attributes to jcr
> >> property -->
> >> <field-descriptor fieldName="path" path="true" />
> >> <field-descriptor fieldName="creationDate" jcrName="jcr:created" />
> >> />
> >> </class-descriptor>
> >>
> >> <class-descriptor className="com.sun.portal.cms.model.Folder"
> >> jcrNodeType="folder"
> >> extend="com.sun.portal.cms.model.HeirarchyContent"
> >> discriminator="false"
> >> >
> >> <!-- Field-descriptor is used to map simple attributes to jcr
> >> property -->
> >> <field-descriptor fieldName="path" path="true" />
> >> />
> >> <collection-descriptor fieldName="children" proxy="false"
> >> jcrNodeType="nt:hierarchyNode"
> >>
> >> elementClassName="com.sun.portal.cms.model.HeirarchyContent"
> >>
> >> collectionConverter="
> >> org.apache.portals.graffito.jcr.persistence.collectionconverter.impl.NTCollectionConverterImpl
> >>
> >> "
> >> />
> >> </class-descriptor>
> >>
> >>
> >>
> >> The problem is I am able to retrieve the items which are properties but
> >> I do not see any child node definitions in folder. Ideally since folder
> >> is inheriting from nt:folder , it should get a childnode definition of
> >> type nt:heirrarchynodeType
> >>
> >> Is there anything I am missing ?
> >> Checked out PersistenceAutoTest.java but it uses all custom nodetypes
> >> which are inherited from nt:base and so , it has childnodedefintions in
> >> custom node type definition.
> >>
> >> Help appreciated.
> >> Thanks,
> >> Ruchi
> >>
> >
>
>
> /*
> * HeirarchyContent.java
> *
> * Created on February 7, 2007, 2:10 PM
> *
> * To change this template, choose Tools | Template Manager
> * and open the template in the editor.
> */
>
> package com.sun.portal.cms.model;
> import java.util.Date;
> /**
> *
> * @author ruchi goel
> */
> public class HeirarchyContent {
> String path;
> Date creationDate;
> /** Creates a new instance of HeirarchyContent */
> public HeirarchyContent() {
> }
> public Date getCreationDate(){
> return creationDate;
> }
> public void setPath(String path){
> this.path = path;
> }
> public void setCreationDate(Date creationDate){
> this.creationDate = creationDate;
> }
> public String getPath(){
> return path;
> }
>
> }
>
> /*
> * Folder.java
> *
> * Created on February 7, 2007, 10:45 AM
> *
> * To change this template, choose Tools | Template Manager
> * and open the template in the editor.
> */
>
> package com.sun.portal.cms.model;
> import java.util.Collection;
> import java.util.ArrayList;
>
>
> /**
> *
> * @author ruchi goel
> */
> public class Folder extends HeirarchyContent {
>
> Collection children;
> /** Creates a new instance of Folder */
> public Folder() {
> } ;
>
> public Folder(String path) {
> this.path = path;
> }
> public void setChildren(Collection children){
> this.children = children;
> }
> public Collection getChildren(){
> return children;
> }
> public void addChild(HeirarchyContent child)
> {
> if (children == null)
> {
> children = new ArrayList();
> }
>
> children.add(child);
> }
>
> }
>
>