jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dan Connelly <dsconne...@adelphia.net>
Subject Re: Session Importer: Question on NodeType matching
Date Thu, 09 Nov 2006 13:32:33 GMT
Stefan Guggisberg wrote:

> On 11/8/06, Dan Connelly <dsconnelly@adelphia.net> 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>



Mime
View raw message