private boolean hasMetadata(PrismContainerValue<R> cVal) { for (Item<?, ?> item : cVal.getItems()) { QName itemName = item.getElementName(); if (itemName.equals(AbstractCredentialType.F_METADATA)) { return true; } } return false; }
private String presentAttributeNames() { StringBuilder sb = new StringBuilder(); Iterator<Item<?, ?>> iterator = getAttributes().getItems().iterator(); while (iterator.hasNext()) { sb.append(PrettyPrinter.prettyPrint(iterator.next().getElementName())); if (iterator.hasNext()) { sb.append(", "); } } return sb.toString(); }
private String presentItemNames() { StringBuilder sb = new StringBuilder(); Iterator<Item<?, ?>> iterator = getPrismValue().getItems().iterator(); while (iterator.hasNext()) { sb.append(PrettyPrinter.prettyPrint(iterator.next().getElementName())); if (iterator.hasNext()) { sb.append(", "); } } return sb.toString(); }
public static String prettyPrint(Item<?, ?> item) { String values = item.getValues().stream() .map(value -> PrettyPrinter.prettyPrint(value)) .collect(Collectors.joining(", ")); return PrettyPrinter.prettyPrint(item.getElementName()) + "={" + values + "}"; }
public QName getElementName() { Item<V,D> anyItem = getAnyItem(); if (anyItem != null) { return anyItem.getElementName(); } if (delta != null) { return delta.getElementName(); } return null; }
public <IV extends PrismValue,ID extends ItemDefinition> void remove(Item<IV,ID> item) { Validate.notNull(item, "Item must not be null."); checkMutability(); Item<IV,ID> existingItem = findItem(item.getElementName(), Item.class); if (existingItem != null && items != null) { items.remove(existingItem); existingItem.setParent(null); } }
private boolean hasValueChange(PrismContainerValue<R> cVal) { for (Item<?, ?> item : cVal.getItems()) { QName itemName = item.getElementName(); if (isValueElement(itemName)) { return true; } } return false; }
public static void assertDefinition(Item item, QName type, int minOccurs, int maxOccurs) { ItemDefinition definition = item.getDefinition(); assertDefinition(definition, item.getElementName(), type, minOccurs, maxOccurs); }
@SuppressWarnings("unchecked") public void mergeContent(PrismContainerValue<?> other, List<QName> overwrite) throws SchemaException { List<ItemName> remainingToOverwrite = overwrite.stream().map(ItemName::fromQName).collect(Collectors.toList()); if (other.getItems() != null) { for (Item<?, ?> otherItem : other.getItems()) { Item<?, ?> existingItem = findItem(otherItem.getElementName()); if (QNameUtil.remove(remainingToOverwrite, otherItem.getElementName()) || existingItem != null && existingItem.isSingleValue()) { remove(existingItem); } merge(otherItem.clone()); } } remainingToOverwrite.forEach(name -> removeItem(name, Item.class)); }
/** * Adds an item to a property container. Existing value will be replaced. * * @param item item to add. */ public <IV extends PrismValue,ID extends ItemDefinition> void addReplaceExisting(Item<IV,ID> item) throws SchemaException { checkMutability(); if (item == null) { return; } Item<IV,ID> existingItem = findItem(item.getElementName(), Item.class); if (existingItem != null && items != null) { items.remove(existingItem); existingItem.setParent(null); } add(item); }
private <C extends Containerable> ItemDefinition getItemDefinition(PrismContainerValue<C> cval, Item<?, ?> item) { if (item.getDefinition() != null) { return item.getDefinition(); } ComplexTypeDefinition ctd = cval.getComplexTypeDefinition(); if (ctd == null) { return null; } return ctd.findLocalItemDefinition(item.getElementName()); }
void trimItemsDefinitionsTrees(Collection<? extends ItemPath> alwaysKeep) { // to play safe, we won't touch PCV-specific complexTypeDefinition for (Item<?, ?> item : CollectionUtils.emptyIfNull(items)) { if (item instanceof PrismContainer) { Collection<ItemPath> alwaysKeepInSub = ItemPathCollectionsUtil.remainder(CollectionUtils.emptyIfNull(alwaysKeep), item.getElementName(), false); ((PrismContainer<?>) item).trimDefinitionTree(alwaysKeepInSub); } } }
public static void assertParentConsistency(Item<?,?> item) { for (PrismValue pval: item.getValues()) { assert pval.getParent() == item : "Wrong parent of "+pval+" in "+PrettyPrinter.prettyPrint(item.getElementName()); if (pval instanceof PrismContainerValue) { assertParentConsistency((PrismContainerValue)pval); } } }
private <T> PrismProperty<T> findProp(List<Item<?, ?>> items, String local) { for (Item<?, ?> item: items) { if (local.equals(item.getElementName().getLocalPart())) { return (PrismProperty<T>) item; } } fail("No item "+local); return null; // not reached }
public static void mergeExtension(PrismContainerValue<?> dstExtensionContainerValue, PrismContainerValue<?> srcExtensionContainerValue) throws SchemaException { for (Item<?,?> srcExtensionItem: emptyIfNull(srcExtensionContainerValue.getItems())) { Item<?,?> magicItem = dstExtensionContainerValue.findItem(srcExtensionItem.getElementName()); if (magicItem == null) { //noinspection unchecked dstExtensionContainerValue.add(srcExtensionItem.clone()); } } }
public PrismContainerValueAsserter<C,RA> assertItems(QName... expectedItems) { for (QName expectedItem: expectedItems) { Item<PrismValue,ItemDefinition> item = getPrismValue().findItem(ItemName.fromQName(expectedItem)); if (item == null) { fail("Expected item "+expectedItem+" in "+desc()+" but there was none. Items present: "+presentItemNames()); } } for (Item<?, ?> existingItem : getPrismValue().getItems()) { if (!QNameUtil.contains(expectedItems, existingItem.getElementName())) { fail("Unexpected item "+existingItem.getElementName()+" in "+desc()+". Expected items: "+QNameUtil.prettyPrint(expectedItems)); } } return this; }
private String getItemLabel(Item item) { return item.getDefinition().getDisplayName() != null ? resolve(item.getDefinition().getDisplayName()) : item.getElementName().getLocalPart(); }
private SceneItemImpl createSceneItemCommon(Item<?,?> item) { SceneItemImpl si = new SceneItemImpl(createSceneItemName(item)); ItemDefinition<?> def = item.getDefinition(); if (def != null) { si.setOperational(def.isOperational()); } si.setSourceItem(item); si.setSourceRelPath(item.getElementName()); return si; }
private <IV extends PrismValue,ID extends ItemDefinition, I extends Item<IV,ID>> void deepCloneDefinitionItem(I item, boolean ultraDeep, PrismContainerDefinition<C> clonedContainerDef, Consumer<ItemDefinition> postCloneAction) { PrismContainerDefinition<C> oldContainerDef = getDefinition(); ItemName itemName = item.getElementName(); ID oldItemDefFromContainer = oldContainerDef.findItemDefinition(itemName); ID oldItemDef = item.getDefinition(); ID clonedItemDef; if (oldItemDefFromContainer == oldItemDef) { clonedItemDef = clonedContainerDef.findItemDefinition(itemName); } else { clonedItemDef = (ID) oldItemDef.deepClone(ultraDeep, postCloneAction); } ((ItemImpl) item).propagateDeepCloneDefinition(ultraDeep, clonedItemDef, postCloneAction); // propagate to items in values item.setDefinition(clonedItemDef); // sets CTD in values only if null! }
private NameImpl createSceneItemName(Item<?,?> item) { NameImpl name = new NameImpl(item.getElementName().getLocalPart()); ItemDefinition<?> def = item.getDefinition(); if (def != null) { name.setDisplayName(def.getDisplayName()); name.setDescription(def.getDocumentation()); } name.setId(name.getSimpleName()); // todo reconsider name.setNamesAreResourceKeys(true); return name; }