@Override public void add(ItemDefinition<?> definition) { if (ResourceAttributeDefinition.class.isAssignableFrom(definition.getClass())) { super.add(definition); } else { throw new IllegalArgumentException("Only ResourceAttributeDefinitions should be put into" + " a ObjectClassComplexTypeDefinition. Item definition = " + definition + "," + " ObjectClassComplexTypeDefinition = " + this); } }
@NotNull @Override public ComplexTypeDefinitionImpl clone() { ComplexTypeDefinitionImpl clone = new ComplexTypeDefinitionImpl(this.typeName, prismContext); copyDefinitionData(clone); clone.shared = false; return clone; }
@NotNull @Override public ObjectClassComplexTypeDefinition deepClone(Map<QName, ComplexTypeDefinition> ctdMap, Map<QName, ComplexTypeDefinition> onThisPath, Consumer<ItemDefinition> postCloneAction) { return (ObjectClassComplexTypeDefinition) super.deepClone(ctdMap, onThisPath, postCloneAction); }
public PrismPropertyDefinition createPropertyDefinition(String localName, String localTypeName) { QName name = new QName(getSchemaNamespace(), localName); QName typeName = new QName(getSchemaNamespace(), localTypeName); return createPropertyDefinition(name, typeName); } //endregion
sb.append(DebugDumpable.INDENT_STRING); sb.append(toString()); if (extensionForType != null) { sb.append(",ext:"); sb.append(",st:").append(staticSubTypes.size()); extendDumpHeader(sb); if (seen.containsKey(this)) { sb.append(" (already shown)"); } else { seen.put(this, null); for (ItemDefinition def : getDefinitions()) { sb.append("\n"); sb.append(def.debugDump(indent + 1)); extendDumpDefinition(sb, def);
/** * Merge provided definition into this definition. */ @Override public void merge(ComplexTypeDefinition otherComplexTypeDef) { for (ItemDefinition otherItemDef: otherComplexTypeDef.getDefinitions()) { ItemDefinition existingItemDef = findItemDefinition(otherItemDef.getName()); if (existingItemDef != null) { LOGGER.warn("Overwriting existing definition {} by {} (in {})", existingItemDef, otherItemDef, this); replaceDefinition(otherItemDef.getName(), otherItemDef.clone()); } else { add(otherItemDef.clone()); } } }
protected void copyDefinitionData(ObjectClassComplexTypeDefinitionImpl clone) { super.copyDefinitionData(clone); clone.kind = this.kind; clone.intent = this.intent; clone.defaultInAKind = this.defaultInAKind; clone.descriptionAttribute = this.descriptionAttribute; clone.displayNameAttribute = this.displayNameAttribute; clone.identifiers.addAll(this.identifiers); clone.namingAttribute = this.namingAttribute; clone.nativeObjectClass = this.nativeObjectClass; clone.secondaryIdentifiers.addAll(this.secondaryIdentifiers); clone.auxiliary = this.auxiliary; }
@NotNull @Override public ComplexTypeDefinition deepClone(Map<QName, ComplexTypeDefinition> ctdMap, Map<QName, ComplexTypeDefinition> onThisPath, Consumer<ItemDefinition> postCloneAction) { if (ctdMap != null) { ComplexTypeDefinition clone = ctdMap.get(this.getTypeName()); if (clone != null) { return clone; // already cloned } } ComplexTypeDefinition cloneInParent = onThisPath.get(this.getTypeName()); if (cloneInParent != null) { return cloneInParent; } ComplexTypeDefinitionImpl clone = clone(); // shallow if (ctdMap != null) { ctdMap.put(this.getTypeName(), clone); } onThisPath.put(this.getTypeName(), clone); clone.itemDefinitions.clear(); for (ItemDefinition itemDef: this.itemDefinitions) { ItemDefinition itemClone = itemDef.deepClone(ctdMap, onThisPath, postCloneAction); clone.itemDefinitions.add(itemClone); if (postCloneAction != null) { postCloneAction.accept(itemClone); } } onThisPath.remove(this.getTypeName()); return clone; }
@Override protected void extendDumpDefinition(StringBuilder sb, ItemDefinition<?> def) { super.extendDumpDefinition(sb, def); if (getPrimaryIdentifiers().contains(def)) { sb.append(",primID"); } if (getSecondaryIdentifiers().contains(def)) { sb.append(",secID"); } }
@Override protected void extendDumpHeader(StringBuilder sb) { super.extendDumpHeader(sb); if (defaultInAKind) { sb.append(" def"); } if (auxiliary) { sb.append(" aux"); } if (kind != null) { sb.append(" ").append(kind.value()); } if (intent != null) { sb.append(" intent=").append(intent); } }
@Override public ComplexTypeDefinitionImpl createComplexTypeDefinition(QName name) { return new ComplexTypeDefinitionImpl(name, prismContext); }
@Override public String debugDump(int indent) { return debugDump(indent, new IdentityHashMap<>()); }
return true; if (!super.equals(obj)) { return false;
public PrismPropertyDefinitionImpl createPropertyDefinition(String localName, QName typeName) { QName name = new QName(getSchemaNamespace(), localName); return createPropertyDefinition(name, typeName); }
@Override public ComplexTypeDefinition createComplexTypeDefinition(QName typeName) { ComplexTypeDefinition cTypeDef = new ComplexTypeDefinitionImpl(typeName, prismContext); add(cTypeDef); return cTypeDef; }
public ComplexTypeDefinition deepClone() { return deepClone(new HashMap<>(), new HashMap<>(), null); }
private void addDefinition(ItemDefinition itemDef) { if (complexTypeDefinition == null) { throw new UnsupportedOperationException("Cannot add an item definition because there's no complex type definition"); } else if (!(complexTypeDefinition instanceof ComplexTypeDefinitionImpl)) { throw new UnsupportedOperationException("Cannot add an item definition into complex type definition of type " + complexTypeDefinition.getClass().getName()); } else { ((ComplexTypeDefinitionImpl) complexTypeDefinition).add(itemDef); } }
public MutableComplexTypeDefinition createComplexTypeDefinition(XSComplexType complexType, PrismContext prismContext, XSAnnotation annotation) throws SchemaException { QName typeName = new QName(complexType.getTargetNamespace(),complexType.getName()); return new ComplexTypeDefinitionImpl(typeName, prismContext); }
@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; }
/** * 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; }