public QName convertAttributeNameToQName(String icfAttrName, ObjectClassComplexTypeDefinition ocDef) { if (specialAttributeMapIcf.containsKey(icfAttrName)) { for (ResourceAttributeDefinition attributeDefinition: ocDef.getAttributeDefinitions()) { if (icfAttrName.equals(attributeDefinition.getFrameworkAttributeName())) { return attributeDefinition.getName(); } } // fallback, compatibility return specialAttributeMapIcf.get(icfAttrName); } QName attrXsdName = new QName(resourceSchemaNamespace, QNameUtil.escapeElementName(icfAttrName), MidPointConstants.PREFIX_NS_RI); return attrXsdName; }
public static void validateObjectClassDefinition(ObjectClassComplexTypeDefinition objectClassDefinition, PrismObject<ResourceType> resource) throws SchemaException { Set<QName> attributeNames = new HashSet<>(); for (ResourceAttributeDefinition<?> attributeDefinition: objectClassDefinition.getAttributeDefinitions()) { QName attrName = attributeDefinition.getName(); if (attributeNames.contains(attrName)) { throw new SchemaException("Duplicate definition of attribute "+attrName+" in object class "+objectClassDefinition.getTypeName()+" in resource schema of "+resource); } attributeNames.add(attrName); } Collection<? extends ResourceAttributeDefinition<?>> primaryIdentifiers = objectClassDefinition.getPrimaryIdentifiers(); Collection<? extends ResourceAttributeDefinition<?>> secondaryIdentifiers = objectClassDefinition.getSecondaryIdentifiers(); if (primaryIdentifiers.isEmpty() && secondaryIdentifiers.isEmpty()) { throw new SchemaException("No identifiers in definition of object class "+objectClassDefinition.getTypeName()+" in resource schema of "+resource); } }
} else { for (ResourceAttributeDefinition attributeDef: objectClassDefinition.getAttributeDefinitions()) { if (attributeDef.isReturnedByDefault()) { String attrName = connIdNameMapper.convertAttributeNameToConnId(attributeDef);
for (QName deleteAuxOcName: deletedAuxObjectClassNames) { ObjectClassComplexTypeDefinition auxOcDef = refinedResourceSchema.findObjectClassDefinition(deleteAuxOcName); for (ResourceAttributeDefinition auxAttrDef: auxOcDef.getAttributeDefinitions()) { QName auxAttrName = auxAttrDef.getName(); if (attributesToDelete.contains(auxAttrName)) {
for (ResourceAttributeDefinition road : ocDef.getAttributeDefinitions()) { String attrContextDescription = road.getName() + ", in " + contextDescription; ResourceAttributeDefinitionType attrDefType = findAttributeDefinitionType(road.getName(), schemaHandlingObjectTypeDefinitionType,
public static RefinedObjectClassDefinition parseFromSchema(ObjectClassComplexTypeDefinition objectClassDef, ResourceType resourceType, RefinedResourceSchema rSchema, PrismContext prismContext, String contextDescription) throws SchemaException { RefinedObjectClassDefinitionImpl rOcDef = new RefinedObjectClassDefinitionImpl(resourceType.getOid(), objectClassDef); String intent = objectClassDef.getIntent(); if (intent == null && objectClassDef.isDefaultInAKind()) { intent = SchemaConstants.INTENT_DEFAULT; } rOcDef.setIntent(intent); if (objectClassDef.getDisplayName() != null) { rOcDef.setDisplayName(objectClassDef.getDisplayName()); } rOcDef.setDefault(objectClassDef.isDefaultInAKind()); for (ResourceAttributeDefinition attrDef : objectClassDef.getAttributeDefinitions()) { String attrContextDescription = intent + ", in " + contextDescription; RefinedAttributeDefinition rAttrDef = RefinedAttributeDefinitionImpl.parse(attrDef, null, objectClassDef, prismContext, attrContextDescription); rOcDef.processIdentifiers(rAttrDef, objectClassDef); if (rOcDef.containsAttributeDefinition(rAttrDef.getName())) { throw new SchemaException("Duplicate definition of attribute " + rAttrDef.getName() + " in " + attrContextDescription); } rOcDef.add(rAttrDef); } return rOcDef; }