public <C extends Containerable> PrismContainerDefinitionImpl<C> createContainerDefinition(QName elementName, ComplexTypeDefinition complexTypeDefinition, PrismContext prismContext, Class<C> compileTimeClass) throws SchemaException { return new PrismContainerDefinitionImpl<>(elementName, complexTypeDefinition, prismContext, compileTimeClass); }
@Override public MutablePrismContainerDefinition<?> createContainerDefinition(QName name, ComplexTypeDefinition ctd) { return new PrismContainerDefinitionImpl<>(name, ctd, prismContext); }
/** * Shallow clone */ @NotNull @Override public PrismContainerDefinitionImpl<C> clone() { PrismContainerDefinitionImpl<C> clone = new PrismContainerDefinitionImpl<>(name, complexTypeDefinition, prismContext, compileTimeClass); copyDefinitionData(clone); return clone; }
private PrismContainerDefinition<?> createAdHocContainerDefinition(QName elementName, ComplexTypeDefinition ctd, int minOccurs, int maxOccurs) { PrismContainerDefinitionImpl<?> def = new PrismContainerDefinitionImpl<>(elementName, ctd, prismContext); def.setMinOccurs(minOccurs); def.setMaxOccurs(maxOccurs); return def; }
public MutablePrismContainerDefinition<?> createContainerDefinition(QName name, ComplexTypeDefinition complexTypeDefinition, int minOccurs, int maxOccurs) { PrismContainerDefinitionImpl<C> def = new PrismContainerDefinitionImpl<>(name, complexTypeDefinition, prismContext); def.setMinOccurs(minOccurs); def.setMaxOccurs(maxOccurs); addDefinition(def); return def; }
@Override public PrismContainerDefinitionImpl createPropertyContainerDefinition(String localElementName, String localTypeName) { QName typeName = new QName(getNamespace(), localTypeName); QName name = new QName(getNamespace(), localElementName); ComplexTypeDefinition cTypeDef = findComplexTypeDefinitionByType(typeName); if (cTypeDef == null) { cTypeDef = new ComplexTypeDefinitionImpl(typeName, prismContext); add(cTypeDef); } PrismContainerDefinitionImpl def = new PrismContainerDefinitionImpl(name, cTypeDef, prismContext); add(def); return def; }
/** * Returns a single-valued container (with a single-valued definition) holding just this value. * @param itemName Item name for newly-created container. * @return */ public PrismContainer<C> asSingleValuedContainer(@NotNull QName itemName) throws SchemaException { PrismContext prismContext = getPrismContext(); Validate.notNull(prismContext, "Prism context is null"); PrismContainerDefinitionImpl<C> definition = new PrismContainerDefinitionImpl<>(itemName, getComplexTypeDefinition(), prismContext); definition.setMaxOccurs(1); PrismContainer<C> pc = definition.instantiate(); pc.add(clone()); return pc; }
/** * Creates a new property container definition and adds it to the schema. * * This is a preferred way how to create definition in the schema. * * @param localTypeName * type name "relative" to schema namespace * @return new property container definition */ @Override public PrismContainerDefinitionImpl createPropertyContainerDefinition(String localTypeName) { QName typeName = new QName(getNamespace(), localTypeName); QName name = new QName(getNamespace(), toElementName(localTypeName)); ComplexTypeDefinition cTypeDef = new ComplexTypeDefinitionImpl(typeName, prismContext); PrismContainerDefinitionImpl def = new PrismContainerDefinitionImpl(name, cTypeDef, prismContext); add(cTypeDef); add(def); return def; }
ComplexTypeDefinition ctd = schemaRegistry.findComplexTypeDefinitionByCompileTimeClass(containerableClass); @SuppressWarnings("unchecked") ID id = (ID) new PrismContainerDefinitionImpl<>(info.itemName, ctd, schemaRegistry.getPrismContext(), containerableClass); info.itemDefinition = id;
@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) { // let's create container definition dynamically QName actualTypeName = itemInfo.getComplexTypeDefinition().getTypeName(); if (getSchemaRegistry().isContainer(actualTypeName)) { // TODO what about objects? 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); }