@SuppressWarnings("unchecked")
Item<?, ?> parseItem(@NotNull RootXNodeImpl root,
ItemDefinition<?> itemDefinition, QName itemName, QName typeName, Class<?> typeClass,
@NotNull ParsingContext pc) throws SchemaException {
ItemInfo itemInfo = ItemInfo.determine(itemDefinition,
root.getRootElementName(), itemName, ARTIFICIAL_OBJECT_NAME,
root.getTypeQName(), typeName,
typeClass, ItemDefinition.class, pc, getSchemaRegistry());
ItemDefinition realDefinition;
if (itemInfo.getItemDefinition() == null && itemInfo.getComplexTypeDefinition() != null) {
QName actualTypeName = itemInfo.getComplexTypeDefinition().getTypeName();
if (getSchemaRegistry().isContainer(actualTypeName)) {
PrismContainerDefinitionImpl def = new PrismContainerDefinitionImpl(itemInfo.getItemName(),
itemInfo.getComplexTypeDefinition(), prismContext);
def.setDynamic(true);
realDefinition = def;
} else {
PrismPropertyDefinitionImpl def = new PrismPropertyDefinitionImpl(itemInfo.getItemName(), actualTypeName, prismContext);
def.setDynamic(true);
realDefinition = def;
}
} else {
realDefinition = itemInfo.getItemDefinition();
}
return parseItemInternal(root.getSubnode(), itemInfo.getItemName(), realDefinition, pc);
}