public ItemDefinition<?> getSourceDefinition() { return sourceItem != null ? sourceItem.getDefinition() : null; }
private Comparator<Item<?, ?>> getItemDisplayOrderComparator() { return (o1, o2) -> compareDefinitions(o1.getDefinition(), o2.getDefinition()); }
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()); }
@NotNull protected StringBuilder debugDumpCommon(int indent) { StringBuilder sb = new StringBuilder(); DebugUtil.indentDebugDump(sb, indent); sb.append("Item: ").append(name).append(" [rel-path: ").append(sourceRelPath).append("]"); if (sourceItem != null) { sb.append(" ITEM"); final ItemDefinition def = sourceItem.getDefinition(); if (def != null) { sb.append(" DEF(").append(def.getName().getLocalPart()).append("/").append(def.getDisplayName()).append(":").append(def.getDisplayOrder()).append(")"); } } if (operational) { sb.append(" OPER"); } return sb; }
@NotNull MatchingRule getMatchingRuleFromRegistry(MatchingRuleRegistry matchingRuleRegistry, Item filterItem) { try { return matchingRuleRegistry.getMatchingRule(matchingRule, filterItem.getDefinition().getTypeName()); } catch (SchemaException ex){ throw new IllegalArgumentException(ex.getMessage(), ex); } }
public static void assertDefinition(Item item, QName type, int minOccurs, int maxOccurs) { ItemDefinition definition = item.getDefinition(); assertDefinition(definition, item.getElementName(), type, minOccurs, maxOccurs); }
public ItemDefinition getDefinition() { Item<V,D> anyItem = getAnyItem(); if (anyItem != null) { return anyItem.getDefinition(); } if (delta != null) { return delta.getDefinition(); } return null; }
public void removeOperationalItems() { accept(visitable -> { if (visitable instanceof Item) { Item item = ((Item) visitable); if (item.getDefinition() != null && item.getDefinition().isOperational()) { PrismValue parent = item.getParent(); if (parent instanceof PrismContainerValue) { // should be the case ((PrismContainerValue) parent).remove(item); } } } }); } }
private String getItemLabel(Item item) { return item.getDefinition().getDisplayName() != null ? resolve(item.getDefinition().getDisplayName()) : item.getElementName().getLocalPart(); }
/** * Marshals a given prism item (object, container, reference, property). * * @param item Item to be marshaled. * @param itemName Name to give to the item in the marshaled form. Usually null (i.e. taken from the item itself). * @param itemDefinition Definition to be used when parsing. Usually null (i.e. taken from the item itself). * @param context Serialization context. * @return Marshaled item. */ @NotNull RootXNodeImpl marshalItemAsRoot(@NotNull Item<?, ?> item, QName itemName, ItemDefinition itemDefinition, SerializationContext context) throws SchemaException { @NotNull QName realItemName = itemName != null ? itemName : item.getElementName(); ItemDefinition realItemDefinition = itemDefinition != null ? itemDefinition : item.getDefinition(); XNodeImpl content = marshalItemContent(item, realItemDefinition, context); if (realItemDefinition != null) { addTypeDefinitionIfNeeded(realItemName, realItemDefinition.getTypeName(), content); } return new RootXNodeImpl(realItemName, content); }
@Override public boolean canBeDefinitionOf(I item) { if (item == null) { return false; } ItemDefinition<?> itemDefinition = item.getDefinition(); if (itemDefinition != null) { if (!QNameUtil.match(getTypeName(), itemDefinition.getTypeName())) { return false; } // TODO: compare entire definition? Probably not. return true; } return true; }
public Set<RAnyValue<?>> convertToRValue(Item item, boolean assignment, RObjectExtensionType ownerType) throws SchemaException, DtoTranslationException { Validate.notNull(item, "Object for converting must not be null."); Validate.notNull(item.getDefinition(), "Item '" + item.getElementName() + "' without definition can't be saved."); ItemDefinition definition = item.getDefinition(); Set<RAnyValue<?>> rValues = new HashSet<>(); if (!isIndexed(definition, item.getElementName(), areDynamicsOfThisKindIndexed(ownerType), prismContext)) { return rValues; } if (LOGGER.isTraceEnabled()) { LOGGER.trace("Converting any values of item {}; definition: {}", item, definition); } try { RAnyValue rValue; List<PrismValue> values = item.getValues(); for (PrismValue value : values) { rValue = convertToRValue(value, assignment, ownerType); rValues.add(rValue); } } catch (Exception ex) { throw new DtoTranslationException("Exception when translating " + item + ": " + ex.getMessage(), ex); } return rValues; }
public <IV extends PrismValue,ID extends ItemDefinition, I extends Item<IV,ID>,DD extends ItemDelta<IV,ID>> DD findItemDelta(ItemPath propertyPath, Class<DD> deltaType, Class<I> itemType, boolean strict) { if (changeType == ChangeType.ADD) { I item = objectToAdd.findItem(propertyPath, itemType); if (item == null) { return null; } DD itemDelta = createEmptyDelta(propertyPath, item.getDefinition(), deltaType, item.getClass()); itemDelta.addValuesToAdd(item.getClonedValues()); return itemDelta; } else if (changeType == ChangeType.MODIFY) { return findModification(propertyPath, deltaType, strict); } else { return null; } }
private <V extends PrismValue, D extends ItemDefinition> void visitItem(Item<V,D> item, ValidationResult result) { if (item.isRaw()) { return; } D definition = item.getDefinition(); if (definition == null) { return; } if (warnDeprecated && definition.isDeprecated()) { warn(result, item, "deprecated"); } if (warnPlannedRemoval) { String plannedRemoval = definition.getPlannedRemoval(); if (plannedRemoval != null) { if (warnPlannedRemovalVersion == null || plannedRemoval.equals(warnPlannedRemovalVersion)) { warn(result, item, "planned for removal in version " + plannedRemoval); } } } }
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; }
protected void assertDefinitions(Visitable value) { value.accept(v -> { if (v instanceof Item) { Item item = (Item) v; String label = item.getPath() + ": " + v; //System.out.println("Checking " + label); if (item.getDefinition() == null) { assertTrue("No definition in " + label, isDynamic(item.getPath())); } else { assertNotNull("No prism context in definition of " + label, item.getDefinition().getPrismContext()); } } else if (v instanceof PrismContainerValue) { PrismContainerValue pcv = (PrismContainerValue) v; String label = pcv.getPath() + ": " + v; //System.out.println("Checking " + label); if (pcv.getComplexTypeDefinition() == null) { fail("No complex type definition in " + label); } else { assertNotNull("No prism context in definition of " + label, pcv.getComplexTypeDefinition().getPrismContext()); } } }); }
@Test public void testComplexMatch() throws Exception { PrismObject<UserType> user = PrismTestUtil.parseObject(PrismInternalTestUtil.USER_JACK_FILE_XML); // System.out.println("user given name" + user.asObjectable().getGivenName()); System.out.println("definition: " +user.findItem(UserType.F_FAMILY_NAME).getDefinition().debugDump()); ObjectFilter filter = getPrismContext().queryFor(UserType.class) .item(UserType.F_FAMILY_NAME).eq("Sparrow") .and().item(UserType.F_FULL_NAME).contains("arr") .and() .block() .item(UserType.F_GIVEN_NAME).eq("Jack") .or().item(UserType.F_GIVEN_NAME).eq("Jackie") .endBlock() .buildFilter(); boolean match = ObjectQuery.match(user, filter, matchingRuleRegistry); AssertJUnit.assertTrue("filter does not match object", match); }
@Test public void testInboundMapping() throws Exception{ final String TEST_NAME = "testInboundMapping"; TestUtil.displayTestTitle(TEST_NAME); PrismContext prismContext = evaluator.getPrismContext(); PrismObject<ShadowType> account = PrismTestUtil.parseObject(new File(MappingTestEvaluator.TEST_DIR + "/account-inbound-mapping.xml")); Item oldItem = account.findItem(ItemPath.create(ShadowType.F_ATTRIBUTES, SchemaTestConstants.ICFS_NAME)); ItemDelta delta = prismContext.deltaFactory().property().createModificationAddProperty(SchemaTestConstants.ICFS_NAME_PATH_PARTS, (PrismPropertyDefinition) oldItem.getDefinition(), ((PrismPropertyValue) oldItem.getAnyValue()).getValue()); PrismObject<UserType> user = evaluator.getUserDefinition().instantiate(); MappingImpl<PrismPropertyValue<PolyString>,PrismPropertyDefinition<PolyString>> mapping = evaluator.createInboudMapping("mapping-inbound.xml", TEST_NAME, delta, user.asObjectable(), account.asObjectable(), null, null); OperationResult opResult = new OperationResult(TEST_NAME); mapping.evaluate(null, opResult); PrismValueDeltaSetTriple<PrismPropertyValue<PolyString>> outputTriple = mapping.getOutputTriple(); outputTriple.checkConsistence(); assertTripleZero(outputTriple, PrismTestUtil.createPolyString("pavolr")); PrismAsserts.assertTripleNoPlus(outputTriple); assertTripleNoMinus(outputTriple); }