{
ImportPropertyData propertyData;
String sName = propertyInfo.getValues().get(0).toString();
InternalQName primaryTypeName = locationFactory.parseJCRName(sName).getInternalName();
ImportNodeData nodeData = (ImportNodeData)tree.pop();
if (!Constants.ROOT_UUID.equals(nodeData.getIdentifier()))
{
NodeData parentNodeData = getParent();
// nodeTypeDataManager.findChildNodeDefinition(primaryTypeName,)
// check is nt:versionedChild subnode of frozenNode
if (nodeData.getQPath().getDepth() > 6 && primaryTypeName.equals(Constants.NT_VERSIONEDCHILD)
&& nodeData.getQPath().getEntries()[5].equals(Constants.JCR_FROZENNODE))
{
//do nothing
}
else if (!nodeTypeDataManager.isChildNodePrimaryTypeAllowed(primaryTypeName, parentNodeData
.getPrimaryTypeName(), parentNodeData.getMixinTypeNames()))
{
throw new ConstraintViolationException("Can't add node " + nodeData.getQName().getAsString() + " to "
+ parentNodeData.getQPath().getAsString() + " node type " + sName
+ " is not allowed as child's node type for parent node type "
+ parentNodeData.getPrimaryTypeName().getAsString());
}
}
//
nodeData.addNodeType((nodeTypeDataManager.getNodeType(primaryTypeName)));
nodeData.setPrimaryTypeName(primaryTypeName);
propertyData =
new ImportPropertyData(QPath.makeChildPath(nodeData.getQPath(), propertyInfo.getName()), propertyInfo
.getIndentifer(), 0, propertyInfo.getType(), nodeData.getIdentifier(), false);
propertyData.setValues(parseValues());
tree.push(nodeData);
return propertyData;