public List<NodeTypeData> registerNodeTypes(final InputStream is, final int alreadyExistsBehaviour,
final String contentType) throws RepositoryException
{
final NodeTypeConverter nodeTypeConverter = new NodeTypeConverter(this.locationFactory, this.accessControlPolicy);
final NodeTypeDataValidator nodeTypeDataValidator = new NodeTypeDataValidator(this.nodeTypeRepository);
NodeTypeDataPersister serializer = null;
if (contentType.equalsIgnoreCase(TEXT_XML))
{
serializer = new XmlNodeTypeDataPersister(nodeTypeConverter, is);
}
else if (contentType.equalsIgnoreCase(TEXT_X_JCR_CND))
{
throw new RepositoryException("Unsupported content type:" + contentType);
}
else
{
throw new RepositoryException("Unsupported content type:" + contentType);
}
final List<NodeTypeData> nodeTypes = serializer.getAllNodeTypes();
// validate
nodeTypeDataValidator.validateNodeType(nodeTypes);
nodeTypeRepository.registerNodeType(nodeTypes, this, accessControlPolicy, alreadyExistsBehaviour);
return nodeTypes;
}