* @param resolver
* @return
* @throws RepositoryException
*/
static QNodeDefinition createQNodeDefinition(Name declaringNodeType, Element ndefElement, NamePathResolver resolver) throws RepositoryException {
QNodeDefinitionBuilder builder = new QNodeDefinitionBuilder();
buildQItemDefinition(declaringNodeType, ndefElement, resolver, builder);
// TODO: webdav server sends jcr names -> nsResolver required. improve this.
// NOTE: the server should send the namespace-mappings as addition ns-defininitions
try {
if (ndefElement.hasAttribute(DEFAULTPRIMARYTYPE_ATTRIBUTE)) {
Name defaultPrimaryType = resolver.getQName(ndefElement.getAttribute(DEFAULTPRIMARYTYPE_ATTRIBUTE));
builder.setDefaultPrimaryType(defaultPrimaryType);
}
Element reqPrimaryTypes = DomUtil.getChildElement(ndefElement, REQUIREDPRIMARYTYPES_ELEMENT, null);
if (reqPrimaryTypes != null) {
ElementIterator it = DomUtil.getChildren(reqPrimaryTypes, REQUIREDPRIMARYTYPE_ELEMENT, null);
while (it.hasNext()) {
builder.addRequiredPrimaryType(resolver.getQName(DomUtil.getTextTrim(it.nextElement())));
}
} else {
builder.addRequiredPrimaryType(NameConstants.NT_BASE);
}
if (ndefElement.hasAttribute(SAMENAMESIBLINGS_ATTRIBUTE)) {
builder.setAllowsSameNameSiblings(Boolean.valueOf(ndefElement.getAttribute(SAMENAMESIBLINGS_ATTRIBUTE)));
}
} catch (NameException e) {
throw new RepositoryException(e);
}
return builder.build();
}