@Override public void applyDefinition(ItemDefinition definition) throws SchemaException { PrismPropertyDefinition propertyDefinition = (PrismPropertyDefinition) definition; if (propertyDefinition != null && !propertyDefinition.isAnyType() && rawElement != null) { value = (T) parseRawElementToNewRealValue(this, propertyDefinition); if (value == null) { // Be careful here. Expression element can be legal sub-element of complex properties. // Therefore parse expression only if there is no legal value. expression = PrismUtilInternal.parseExpression(rawElement, prismContext); } rawElement = null; } }
private boolean isInstantiable(ItemDefinition definition) { if (definition.isAbstract()) { return false; } if (definition instanceof PrismContainerDefinition) { PrismContainerDefinition pcd = (PrismContainerDefinition) definition; ComplexTypeDefinition ctd = pcd.getComplexTypeDefinition(); return ctd != null && ctd.getCompileTimeClass() != null; } else if (definition instanceof PrismPropertyDefinition) { PrismPropertyDefinition ppd = (PrismPropertyDefinition) definition; if (ppd.isAnyType()) { return false; } // TODO optimize return getSchemaRegistry().determineClassForType(ppd.getTypeName()) != null || getSchemaRegistry().findTypeDefinitionByType(ppd.getTypeName(), TypeDefinition.class) != null; } else { return false; } }
IV value; if (itemDefinition != null && !(itemDefinition instanceof PrismPropertyDefinition && ((PrismPropertyDefinition) itemDefinition).isAnyType())) { if (itemName == null) { itemName = itemDefinition.getName();
private <T> PrismPropertyValue<T> parsePropertyValue(@NotNull XNodeImpl node, @Nullable PrismPropertyDefinition<T> definition, @NotNull ParsingContext pc) throws SchemaException { QName typeFromDefinition = definition != null && !definition.isAnyType() ? definition.getTypeName() : null; QName typeName = getSchemaRegistry().areComparable(typeFromDefinition, node.getTypeQName()) ?