*
* @return child node definition
* @throws NameException if the definition contains an illegal name
*/
private NodeDefImpl getChildNodeDef() throws NameException, NamespaceException {
NodeDefImpl def = new NodeDefImpl();
String name = walker.getAttribute(Constants.NAME_ATTRIBUTE);
if (name.equals("*")) {
def.setName(ItemDef.ANY_NAME);
} else {
def.setName(resolver.getQName(name));
}
// simple attributes
def.setAutoCreated(Boolean.valueOf(
walker.getAttribute(Constants.AUTOCREATED_ATTRIBUTE))
.booleanValue());
def.setMandatory(Boolean.valueOf(
walker.getAttribute(Constants.MANDATORY_ATTRIBUTE))
.booleanValue());
def.setProtected(Boolean.valueOf(
walker.getAttribute(Constants.PROTECTED_ATTRIBUTE))
.booleanValue());
def.setOnParentVersion(OnParentVersionAction.valueFromName(
walker.getAttribute(Constants.ONPARENTVERSION_ATTRIBUTE)));
def.setAllowsSameNameSiblings(Boolean.valueOf(
walker.getAttribute(Constants.SAMENAMESIBLINGS_ATTRIBUTE))
.booleanValue());
// default primary type
String type =
walker.getAttribute(Constants.DEFAULTPRIMARYTYPE_ATTRIBUTE);
if (type != null && type.length() > 0) {
def.setDefaultPrimaryType(resolver.getQName(type));
}
// required primary types
if (walker.enterElement(Constants.REQUIREDPRIMARYTYPES_ELEMENT)) {
List types = new ArrayList();
while (walker.iterateElements(Constants.REQUIREDPRIMARYTYPE_ELEMENT)) {
types.add(resolver.getQName(walker.getContent()));
}
def.setRequiredPrimaryTypes(
(Name[]) types.toArray(new Name[types.size()]));
walker.leaveElement();
} else {
/* Default to nt:base?
throw new InvalidNodeTypeDefException(