code: public PropertyDefinitionData[] readPropertyDefinitions(NodeData nodeData) throws NodeTypeReadException,
        RepositoryException
     {
  
        List<PropertyDefinitionData> propertyDefinitionDataList;
  
        List<NodeData> childDefinitions = dataManager.getChildNodesData(nodeData);
        InternalQName name = null;
        if (childDefinitions.size() > 0)
           name = readMandatoryName(nodeData, null, Constants.JCR_NODETYPENAME);
        else
           return new PropertyDefinitionData[0];
        propertyDefinitionDataList = new ArrayList<PropertyDefinitionData>();
  
        for (NodeData childDefinition : childDefinitions)
        {
           if (Constants.NT_PROPERTYDEFINITION.equals(childDefinition.getPrimaryTypeName()))
           {
              propertyDefinitionDataList.add(propertyDefinitionAccessProvider.read(childDefinition, name));
           }
        }
  
        return propertyDefinitionDataList.toArray(new PropertyDefinitionData[propertyDefinitionDataList.size()]);
     }
docs: Read PropertyDefinitionData of node type.
  @param nodeData
  @return
  @throws RepositoryException
  @throws NodeTypeReadException
  @throws RepositoryException