Stefan Guggisberg wrote:

On 11/8/06, Dan Connelly <[EMAIL PROTECTED]> wrote:

All:

This is a follow-up on my questions posted per "ThirdHop for structured
node types".   I have got most of what I want working, but not all.

One remaining problem is that a certain child-node stays unstructured
although I have provided a structured node type for it.   It is
difficult to diagnose why I am not getting jcr:primaryType of
"teneo:proxy" for the "author" child node.

Details below.   The "library:Book" node is imported (correctly) as a
structured type.   But its child "author" is not.   It should be a
"teneo:proxy" primary node type.

Could there be a problem here because the"author" element is in the
un-named namespace, not in the "library" namespace of its parent?


no. the problem is the following:

[...]
<library:Book jcr:primaryType="teneo:eobject"
[...]

i.e. library:Book is of type teneo:eobject which extends
nt:unstructured. that's why "author" ends up being of type
nt:unstructured.

i guess library:Book should be of type library:Book.

btw: the naming of node and type is somewhat confusing...

cheers
stefan

<snip>
--------------------------------------------------------------------------------------------------------

Stefan:

Agreed, the jcr:primaryType attribute on element library:Book gets set incorrectly. How can I fix this in my node type specification? (I assume that I can alter this behavior through the node type defs, that this is not a bug in Jackrabbit.)

I made some changes in my custom_nodetype.xml spec trying to make this change:

   * I set isMixin="true" for teneo:eobject.
   * I set explicit requiredPrimaryType in the childNode defs of
     teneo:content.

However, the output XML is unchanged. The element library:Book still has attribute jcr:primaryType="teneo:eobject", which is incorrect.

I have listed the relevant portion of my new custom_nodetype.xml below.

      Thanks,    Dan

<nodeType name="teneo:eobject" isMixin="true">
   <supertypes>
     <supertype>mix:referenceable</supertype>
     <supertype>nt:unstructured</supertype>
   </supertypes>
 </nodeType>

   <nodeType name="teneo:proxy" isMixin="false" >
    <supertypes>
     <supertype>nt:base</supertype>
</supertypes> <propertyDefinition name="href" requiredType="String" autoCreated="false" mandatory="true" onParentVersion="COPY" protected="false" multiple="false" />
   </nodeType>
<nodeType name="library:Book" isMixin="false" hasOrderableChildNodes="false" >
       <supertypes>
           <supertype>teneo:eobject</supertype>
       </supertypes>
<propertyDefinition name="title" requiredType="String" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" multiple="false"/> <propertyDefinition name="pages" requiredType="Long" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" multiple="false"/> <propertyDefinition name="category" requiredType="String" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" multiple="false"/> <childNodeDefinition name="author" defaultPrimaryType="teneo:proxy" autoCreated="false" mandatory="true" onParentVersion="COPY" protected="false" sameNameSiblings="false" >
         <requiredPrimaryTypes>
           <requiredPrimaryType>teneo:proxy</requiredPrimaryType>
         </requiredPrimaryTypes>
       </childNodeDefinition>
   </nodeType>
<nodeType name="library:Library" isMixin="false" hasOrderableChildNodes="false">
       <supertypes>
           <supertype>teneo:eobject</supertype>
       </supertypes>
<propertyDefinition name="name" requiredType="String" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" multiple="false"/> <childNodeDefinition name="writers" defaultPrimaryType="teneo:proxy" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" sameNameSiblings="true" >
         <requiredPrimaryTypes>
           <requiredPrimaryType>teneo:proxy</requiredPrimaryType>
         </requiredPrimaryTypes>
         </childNodeDefinition>
<childNodeDefinition name="books" defaultPrimaryType="teneo:proxy" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" sameNameSiblings="true" >
         <requiredPrimaryTypes>
           <requiredPrimaryType>teneo:proxy</requiredPrimaryType>
         </requiredPrimaryTypes>
         </childNodeDefinition>
   </nodeType>

<nodeType name="library:Writer" isMixin="false" hasOrderableChildNodes="false" >
       <supertypes>
           <supertype>teneo:eobject</supertype>
       </supertypes>
<propertyDefinition name="name" requiredType="String" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" multiple="false"/> <childNodeDefinition name="books" defaultPrimaryType="teneo:proxy" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" sameNameSiblings="true" >
         <requiredPrimaryTypes>
           <requiredPrimaryType>teneo:proxy</requiredPrimaryType>
         </requiredPrimaryTypes>
         </childNodeDefinition>
   </nodeType>

   <nodeType name="teneo:content" isMixin="false" >
    <supertypes>
     <supertype>nt:unstructured</supertype>
</supertypes> <childNodeDefinition name="library:Library" defaultPrimaryType="library:Library" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" sameNameSiblings="false" >
       <requiredPrimaryTypes>
           <requiredPrimaryType>library:Library</requiredPrimaryType>
       </requiredPrimaryTypes>
     </childNodeDefinition>
<childNodeDefinition name="library:Book" defaultPrimaryType="library:Book" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" sameNameSiblings="true" >
       <requiredPrimaryTypes>
           <requiredPrimaryType>library:Book</requiredPrimaryType>
       </requiredPrimaryTypes>
   </childNodeDefinition>
<childNodeDefinition name="library:Writer" defaultPrimaryType="library:Writer" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" sameNameSiblings="true" >
       <requiredPrimaryTypes>
           <requiredPrimaryType>library:Writer</requiredPrimaryType>
       </requiredPrimaryTypes>
     </childNodeDefinition>
   </nodeType>


Reply via email to