* @throws UnknownPrefixException if the definition contains an
* unknown namespace prefix
*/
private NodeDefImpl getChildNodeDef()
throws IllegalNameException, UnknownPrefixException {
NodeDefImpl def = new NodeDefImpl();
String name = walker.getAttribute(Constants.NAME_ATTRIBUTE);
if (name.equals("*")) {
def.setName(ItemDef.ANY_NAME);
} else {
def.setName(NameFormat.parse(name, resolver));
}
// 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(NameFormat.parse(type, resolver));
}
// required primary types
if (walker.enterElement(Constants.REQUIREDPRIMARYTYPES_ELEMENT)) {
Vector types = new Vector();
while (walker.iterateElements(Constants.REQUIREDPRIMARYTYPE_ELEMENT)) {
types.add(NameFormat.parse(walker.getContent(), resolver));
}
def.setRequiredPrimaryTypes(
(QName[]) types.toArray(new QName[types.size()]));
walker.leaveElement();
} else {
/* Default to nt:base?
throw new InvalidNodeTypeDefException(