@Override public ItemDefinition deepClone(Map<QName,ComplexTypeDefinition> ctdMap, Map<QName,ComplexTypeDefinition> onThisPath, Consumer<ItemDefinition> postCloneAction) { PrismContainerDefinitionImpl<C> clone = clone(); ComplexTypeDefinition ctd = getComplexTypeDefinition(); if (ctd != null) { ctd = ctd.deepClone(ctdMap, onThisPath, postCloneAction); clone.setComplexTypeDefinition(ctd); } return clone; }
protected void deepCloneDefinition(boolean ultraDeep, PrismContainerDefinition<C> clonedContainerDef, Consumer<ItemDefinition> postCloneAction) { // special treatment of CTD (we must not simply overwrite it with clonedPCD.CTD!) PrismContainerable parent = getParent(); if (parent != null && complexTypeDefinition != null) { if (complexTypeDefinition == parent.getComplexTypeDefinition()) { replaceComplexTypeDefinition(clonedContainerDef.getComplexTypeDefinition()); } else { replaceComplexTypeDefinition(complexTypeDefinition.deepClone(ultraDeep ? null : new HashMap<>(), new HashMap<>(), postCloneAction)); // OK? } } if (items != null) { for (Item<?,?> item: items) { deepCloneDefinitionItem(item, ultraDeep, clonedContainerDef, postCloneAction); } } }