@NotNull @Override public PrismReferenceDefinition clone() { PrismReferenceDefinitionImpl clone = new PrismReferenceDefinitionImpl(getName(), getTypeName(), getPrismContext()); copyDefinitionData(clone); return clone; }
@NotNull @Override public PrismReference instantiate() { return instantiate(getName()); }
private PrismReferenceDefinition createAdHocReferenceDefinition(QName elementName, ComplexTypeDefinition ctd, int minOccurs, int maxOccurs) { PrismReferenceDefinitionImpl def = new PrismReferenceDefinitionImpl(elementName, ctd.getTypeName(), prismContext); def.setMinOccurs(minOccurs); def.setMaxOccurs(maxOccurs); return def; }
definition = (PrismReferenceDefinitionImpl) definitionFactory.createReferenceDefinition(primaryElementName, typeName, containingCtd, prismContext, annotation, elementParticle); definition.setInherited(inherited); if (containingCtd != null) { containingCtd.toMutable().add(definition); if (definition.getTargetTypeName() == null) { definition.setTargetTypeName(typeName); if (definition.getCompositeObjectElementName() == null) { definition.setCompositeObjectElementName(elementName); definition.setTypeName(typeName); definition.setTargetTypeName(targetType); definition.setComposite(composite);
@Override public MutablePrismReferenceDefinition createReferenceDefinition(QName name, QName typeName) { return new PrismReferenceDefinitionImpl(name, typeName, prismContext); }
@Override public boolean isValidFor(@NotNull QName elementQName, @NotNull Class<? extends ItemDefinition> clazz, boolean caseInsensitive) { return clazz.isAssignableFrom(this.getClass()) && (QNameUtil.match(elementQName, getName(), caseInsensitive) || QNameUtil.match(elementQName, getCompositeObjectElementName(), caseInsensitive)); }
@Override public boolean canBeDefinitionOf(PrismValue pvalue) { if (pvalue == null) { return false; } if (!(pvalue instanceof PrismReferenceValue)) { return false; } Itemable parent = pvalue.getParent(); if (parent != null) { if (!(parent instanceof PrismReference)) { return false; } return canBeDefinitionOf((PrismReference)parent); } else { return true; } }
@Override public <T extends ItemDefinition> T findItemDefinition(@NotNull ItemPath path, @NotNull Class<T> clazz) { if (!path.startsWithObjectReference()) { return super.findItemDefinition(path, clazz); } else { ItemPath rest = path.rest(); PrismObjectDefinition referencedObjectDefinition = getSchemaRegistry().determineReferencedObjectDefinition(targetTypeName, rest); return (T) ((ItemDefinition) referencedObjectDefinition).findItemDefinition(rest, clazz); } }
public PrismReferenceDefinition createReferenceDefinition(QName primaryElementName, QName typeName, ComplexTypeDefinition complexTypeDefinition, PrismContext prismContext, XSAnnotation annotation, XSParticle elementParticle) throws SchemaException { return new PrismReferenceDefinitionImpl(primaryElementName, typeName, prismContext); }
@Test public void testSummarize06() throws Exception { final String TEST_NAME="testSummarize06"; displayTestTitle(TEST_NAME); // GIVEN PrismReferenceDefinition referenceDefinition = new PrismReferenceDefinitionImpl(UserType.F_PARENT_ORG_REF, OBJECT_REFERENCE_TYPE_QNAME, PrismTestUtil.getPrismContext()); ReferenceDelta delta1 = new ReferenceDeltaImpl(referenceDefinition, PrismTestUtil.getPrismContext()); delta1.addValueToAdd(new PrismReferenceValueImpl("oid1")); ObjectDelta<UserType> objectDelta1 = new ObjectDeltaImpl<>(UserType.class, ChangeType.MODIFY, PrismTestUtil.getPrismContext()); objectDelta1.addModification(delta1); ReferenceDelta delta2 = new ReferenceDeltaImpl(referenceDefinition, PrismTestUtil.getPrismContext()); delta2.addValueToAdd(new PrismReferenceValueImpl("oid1")); // here we add the same value ObjectDelta<UserType> objectDelta2 = new ObjectDeltaImpl<>(UserType.class, ChangeType.MODIFY, PrismTestUtil.getPrismContext()); objectDelta2.addModification(delta2); // WHEN ObjectDelta<UserType> sumDelta = ObjectDeltaCollectionsUtil.summarize(objectDelta1, objectDelta2); // THEN System.out.println("Summarized delta:"); System.out.println(sumDelta.debugDump()); PrismAsserts.assertModifications(sumDelta, 1); ReferenceDelta modification = (ReferenceDelta) sumDelta.getModifications().iterator().next(); PrismAsserts.assertNoReplace(modification); assertEquals("Invalid number of values to add", 1, modification.getValuesToAdd().size()); PrismAsserts.assertNoDelete(modification); }
assertPath(delta1, UserType.F_DESCRIPTION); PrismReferenceDefinitionImpl referenceDefinition = new PrismReferenceDefinitionImpl(UserType.F_PARENT_ORG_REF, OBJECT_REFERENCE_TYPE_QNAME, PrismTestUtil.getPrismContext()); ReferenceDelta delta2 = new ReferenceDeltaImpl(referenceDefinition, PrismTestUtil.getPrismContext());