public ResourceObjectAssociationType clone() { ResourceObjectAssociationType object = new ResourceObjectAssociationType(); PrismContainerValue value = asPrismContainerValue().clone(); object.setupContainerValue(value); return object; }
private QName getAssociationAttribute() { ResourceObjectAssociationDirectionType direction = resourceObjectAssociationType.getDirection(); if (ResourceObjectAssociationDirectionType.OBJECT_TO_SUBJECT.equals(direction)) { return resourceObjectAssociationType.getAssociationAttribute(); } return resourceObjectAssociationType.getValueAttribute(); }
public List<String> createIntentList() { PrismForJAXBUtil.createProperty(asPrismContainerValue(), F_INTENT); return getIntent(); }
@Override protected ResourceObjectAssociationType createItem(PrismContainerValue value) { ResourceObjectAssociationType association = new ResourceObjectAssociationType(); association.setupContainerValue(value); return association; }
private void checkSchemaHandlingAssociation(ResourceValidationContext ctx, ObjectClassComplexTypeDefinition ocdef, ItemPath path, ResourceObjectTypeDefinitionType objectType, ResourceObjectAssociationType associationDef) { checkSchemaHandlingItem(ctx, path, objectType, associationDef); checkItemRef(ctx, path, objectType, associationDef, C_NO_ASSOCIATION_NAME); checkNotEmpty(ctx, path, objectType, associationDef, associationDef.getKind(), ResourceObjectAssociationType.F_KIND, C_MISSING_ASSOCIATION_TARGET_KIND); checkNotEmpty(ctx, path, objectType, associationDef, associationDef.getIntent(), ResourceObjectAssociationType.F_INTENT, C_MISSING_ASSOCIATION_TARGET_INTENT); checkNotEmpty(ctx, path, objectType, associationDef, associationDef.getDirection(), ResourceObjectAssociationType.F_DIRECTION, C_MISSING_ASSOCIATION_DIRECTION); checkNotEmpty(ctx, path, objectType, associationDef, associationDef.getAssociationAttribute(), ResourceObjectAssociationType.F_ASSOCIATION_ATTRIBUTE, C_MISSING_ASSOCIATION_ASSOCIATION_ATTRIBUTE); checkNotEmpty(ctx, path, objectType, associationDef, associationDef.getValueAttribute(), ResourceObjectAssociationType.F_VALUE_ATTRIBUTE, C_MISSING_ASSOCIATION_VALUE_ATTRIBUTE); // TODO checking matching rule for associations? QName ref = itemRefToName(associationDef.getRef()); if (ocdef != null) { if (ref != null) { if (ocdef.findAttributeDefinition(ref, ResourceTypeUtil.isCaseIgnoreAttributeNames(ctx.resourceObject.asObjectable())) != null) { ctx.validationResult.add(Issue.Severity.ERROR, CAT_SCHEMA_HANDLING, C_COLLIDING_ASSOCIATION_NAME, getString(CLASS_DOT + C_COLLIDING_ASSOCIATION_NAME, getName(objectType), prettyPrintUsingStandardPrefix(ref)), ctx.resourceRef, path.append(ResourceItemDefinitionType.F_REF)); } } } for (String intent : associationDef.getIntent()) { checkAssociationTargetIntent(ctx, path, objectType, associationDef, ref, intent); } }
private <S extends ShadowType,T> void postProcessEntitlementSubjectToEntitlement(ResourceType resourceType, PrismObject<S> resourceObject, RefinedObjectClassDefinition objectClassDefinition, RefinedAssociationDefinition assocDefType, RefinedObjectClassDefinition entitlementDef, ResourceAttributeContainer attributesContainer, PrismContainer<ShadowAssociationType> associationContainer, OperationResult parentResult) throws SchemaException { QName assocAttrName = assocDefType.getResourceObjectAssociationType().getAssociationAttribute(); QName valueAttrName = assocDefType.getResourceObjectAssociationType().getValueAttribute(); postProcessEntitlementSubjectToEntitlement(resourceType, resourceObject, objectClassDefinition, assocDefType, entitlementDef, attributesContainer, associationContainer, assocAttrName, valueAttrName, parentResult); }
public static boolean shouldStoreAtributeInShadow(RefinedObjectClassDefinition objectClassDefinition, QName attributeName, CachingStategyType cachingStrategy) throws ConfigurationException { if (cachingStrategy == null || cachingStrategy == CachingStategyType.NONE) { if (objectClassDefinition.isPrimaryIdentifier(attributeName) || objectClassDefinition.isSecondaryIdentifier(attributeName)) { return true; } for (RefinedAssociationDefinition associationDef: objectClassDefinition.getAssociationDefinitions()) { if (associationDef.getResourceObjectAssociationType().getDirection() == ResourceObjectAssociationDirectionType.OBJECT_TO_SUBJECT) { QName valueAttributeName = associationDef.getResourceObjectAssociationType().getValueAttribute(); if (QNameUtil.match(attributeName, valueAttributeName)) { return true; } } } return false; } else if (cachingStrategy == CachingStategyType.PASSIVE) { RefinedAttributeDefinition<Object> attrDef = objectClassDefinition.findAttributeDefinition(attributeName); return attrDef != null; } else { throw new ConfigurationException("Unknown caching strategy "+cachingStrategy); } }
/** * Create an instance of {@link ResourceObjectAssociationType } * */ public ResourceObjectAssociationType createResourceObjectAssociationType() { return new ResourceObjectAssociationType(); }
private void evaluateAssociations(Task task, OperationResult result) throws ExpressionEvaluationException, ObjectNotFoundException, SchemaException, SecurityViolationException, ConfigurationException, CommunicationException { associationMappings = new ArrayList<>(); for (ResourceObjectAssociationType associationDefinitionType : getConstructionType().getAssociation()) { QName assocName = ItemPathTypeUtil.asSingleNameOrFailNullSafe(associationDefinitionType.getRef()); if (assocName == null) { throw new SchemaException( "No association name (ref) in association definition in construction in " + getSource()); } MappingType outboundMappingType = associationDefinitionType.getOutbound(); if (outboundMappingType == null) { throw new SchemaException("No outbound section in definition of association " + assocName + " in construction in " + getSource()); } MappingImpl<PrismContainerValue<ShadowAssociationType>, PrismContainerDefinition<ShadowAssociationType>> assocMapping = evaluateAssociation(associationDefinitionType, task, result); if (assocMapping != null) { associationMappings.add(assocMapping); } } }
throw new SchemaException("No definition for entitlement intent(s) '"+assocDefType.getIntents()+"' in "+resourceType); ResourceObjectAssociationDirectionType direction = assocDefType.getResourceObjectAssociationType().getDirection(); if (direction == ResourceObjectAssociationDirectionType.SUBJECT_TO_OBJECT) { postProcessEntitlementSubjectToEntitlement(resourceType, resourceObject, objectClassDefinition, assocDefType, entitlementDef, attributesContainer, associationContainer, parentResult); } else if (direction == ResourceObjectAssociationDirectionType.OBJECT_TO_SUBJECT) { if (assocDefType.getResourceObjectAssociationType().getShortcutAssociationAttribute() != null) { postProcessEntitlementSubjectToEntitlement(resourceType, resourceObject, objectClassDefinition, assocDefType, entitlementDef, attributesContainer, associationContainer, assocDefType.getResourceObjectAssociationType().getShortcutAssociationAttribute(), assocDefType.getResourceObjectAssociationType().getShortcutValueAttribute(), parentResult); } else { postProcessEntitlementEntitlementToSubject(subjectCtx, resourceObject, assocDefType, entitlementCtx, attributesContainer, associationContainer, parentResult);
public Collection<String> getIntents() { return resourceObjectAssociationType.getIntent(); }
continue; QName valueAttributeName = associationDefinition.getResourceObjectAssociationType().getValueAttribute(); if (!ShadowUtil.matchesAttribute(subjectItemPath, valueAttributeName)) { continue;
public ShadowKindType getKind() { return resourceObjectAssociationType.getKind(); }
public List<MappingType> getInboundMappingTypes() { return resourceObjectAssociationType.getInbound(); }
@NotNull public List<String> getIntolerantValuePattern() { return resourceObjectAssociationType.getIntolerantValuePattern(); }
public QName getMatchingRule() { return getResourceObjectAssociationType().getMatchingRule(); }
public MappingType getOutboundMappingType() { return resourceObjectAssociationType.getOutbound(); }
QName assocAttrName = assocDefType.getResourceObjectAssociationType().getAssociationAttribute(); if (assocAttrName == null) { throw new SchemaException("No association attribute defined in entitlement association '"+associationName+"' in "+resourceType); QName valueAttrName = assocDefType.getResourceObjectAssociationType().getValueAttribute(); if (valueAttrName == null) { throw new SchemaException("No value attribute defined in entitlement association '"+associationName+"' in "+resourceType);
if (associationDef.getResourceObjectAssociationType().getDirection() == ResourceObjectAssociationDirectionType.OBJECT_TO_SUBJECT) { QName valueAttributeName = associationDef.getResourceObjectAssociationType().getValueAttribute(); if (repoAttributesContainer.findAttribute(valueAttributeName) == null) { ResourceAttribute<Object> valueAttribute = attributesContainer.findAttribute(valueAttributeName);
/** * Create an instance of {@link ResourceObjectAssociationType } * */ public ResourceObjectAssociationType createResourceObjectAssociationType() { return new ResourceObjectAssociationType(); }