<binding>
 
  <mapping name="nodeTypes" 
  		class="org.exoplatform.services.jcr.core.nodetype.NodeTypeValuesList"> 
    <collection field="nodeTypeValuesList"
    	item-type="org.exoplatform.services.jcr.core.nodetype.NodeTypeValue"
    	type="java.util.ArrayList"/>
  </mapping>
 
  <mapping name="nodeType" 
           class="org.exoplatform.services.jcr.core.nodetype.NodeTypeValue"> 
    <value name="name" field="name" style="attribute" />           
    <value name="isMixin" field="mixin" style="attribute" />
    <value name="hasOrderableChildNodes" field="orderableChild" style="attribute" usage="optional"/>
    <value name="primaryItemName" field="primaryItemName" style="attribute"
    			serializer="org.exoplatform.services.jcr.core.nodetype.DefaulStringConversion.serializeString"
    			usage="optional"/>
    <collection name="supertypes" field="declaredSupertypeNames" 
    			item-type="java.lang.String"
                type="java.util.ArrayList" 
                usage="optional">                
    	<value name="supertype" 
    			serializer="org.exoplatform.services.jcr.core.nodetype.DefaulStringConversion.serializeString"
    			deserializer="org.exoplatform.services.jcr.core.nodetype.DefaulStringConversion.deserializeString"/>            
    </collection>    			
    <collection name="propertyDefinitions" field="declaredPropertyDefinitionValues" 
                item-type="org.exoplatform.services.jcr.core.nodetype.PropertyDefinitionValue"
                type="java.util.ArrayList"
                usage="optional"/>
    <collection name="childNodeDefinitions" field="declaredChildNodeDefinitionValues" 
                item-type="org.exoplatform.services.jcr.core.nodetype.NodeDefinitionValue" 
                type="java.util.ArrayList"
                usage="optional"/>
  </mapping>

  <mapping name="propertyDefinition" class="org.exoplatform.services.jcr.core.nodetype.PropertyDefinitionValue">
    <value name="name" field="name" style="attribute"/>
    <value name="requiredType" field="requiredType" style="attribute" 
    	serializer="org.exoplatform.services.jcr.core.nodetype.PropertyTypeConversion.serializeType" 
    	deserializer="org.exoplatform.services.jcr.core.nodetype.PropertyTypeConversion.deserializeType"/>
    <value name="autoCreated" field="autoCreate" style="attribute"/> 
    <value name="mandatory" field="mandatory" style="attribute"/>
    <value name="onParentVersion" field="onVersion" style="attribute"   
    	serializer="org.exoplatform.services.jcr.core.nodetype.OnParentVersionActionConversion.serializeType" 
    	deserializer="org.exoplatform.services.jcr.core.nodetype.OnParentVersionActionConversion.deserializeType"/>
    <value name="protected" field="readOnly" style="attribute"/>
    <value name="multiple" field="multiple" style="attribute"/>
    <collection name="valueConstraints" field="valueConstraints" 
    	item-type="java.lang.String" 
    	type="java.util.ArrayList"
    	usage="optional">
    	<value name="valueConstraint" 
    			serializer="org.exoplatform.services.jcr.core.nodetype.DefaulStringConversion.serializeString"
    			deserializer="org.exoplatform.services.jcr.core.nodetype.DefaulStringConversion.deserializeString"/>
    </collection>			
    <collection name="defaultValues" field="defaultValueStrings" 
    	item-type="java.lang.String" 
    	type="java.util.ArrayList"
    	usage="optional">
    	<value name="defaultValue" 
    			serializer="org.exoplatform.services.jcr.core.nodetype.DefaulStringConversion.serializeString"
    			deserializer="org.exoplatform.services.jcr.core.nodetype.DefaulStringConversion.deserializeString"/>
    </collection>
  </mapping>

  <mapping name="childNodeDefinition" class="org.exoplatform.services.jcr.core.nodetype.NodeDefinitionValue">
    <value name="name" field="name" style="attribute"/>
    <value name="defaultPrimaryType" field="defaultNodeTypeName" style="attribute" 
    	usage="optional"/>
    <value name="autoCreated" field="autoCreate" style="attribute" />    
    <value name="mandatory" field="mandatory" style="attribute" />
    <value name="onParentVersion" field="onVersion" style="attribute"
    	serializer="org.exoplatform.services.jcr.core.nodetype.OnParentVersionActionConversion.serializeType" 
    	deserializer="org.exoplatform.services.jcr.core.nodetype.OnParentVersionActionConversion.deserializeType"/>
    <value name="protected" field="readOnly" style="attribute"/>
    <value name="sameNameSiblings" field="sameNameSiblings" style="attribute"/>
    <collection name="requiredPrimaryTypes" field="requiredNodeTypeNames" 
    	item-type="java.lang.String" 
    	type="java.util.ArrayList">
    	<value name="requiredPrimaryType" 
    			serializer="org.exoplatform.services.jcr.core.nodetype.DefaulStringConversion.serializeString"
    			deserializer="org.exoplatform.services.jcr.core.nodetype.DefaulStringConversion.deserializeString"/>
    </collection>			
  </mapping>
  
</binding>
