@NotNull @Override public RefinedObjectClassDefinitionImpl clone() { RefinedObjectClassDefinitionImpl clone = new RefinedObjectClassDefinitionImpl(resourceOid, originalObjectClassDefinition); copyDefinitionData(clone); shared = false; return clone; }
private void copyDefinitionData(RefinedObjectClassDefinitionImpl clone) { clone.attributeDefinitions.addAll(cloneDefinitions(this.attributeDefinitions)); clone.associationDefinitions.addAll(cloneAssociations(this.associationDefinitions)); clone.auxiliaryObjectClassDefinitions.addAll(auxiliaryObjectClassDefinitions); clone.schemaHandlingObjectTypeDefinitionType = this.schemaHandlingObjectTypeDefinitionType; clone.intent = this.intent; clone.kind = this.kind; clone.displayName = this.displayName; clone.description = this.description; clone.isDefault = this.isDefault; clone.primaryIdentifiers.addAll(cloneDefinitions(this.primaryIdentifiers)); clone.secondaryIdentifiers.addAll(cloneDefinitions(this.secondaryIdentifiers)); clone.protectedObjectPatterns.addAll(this.protectedObjectPatterns); clone.baseContext = this.baseContext; }
@Override public PrismObjectDefinition<ShadowType> getObjectDefinition() { if (objectDefinition == null) { objectDefinition = RefinedObjectClassDefinitionImpl.constructObjectDefinition(this); } return objectDefinition; }
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; }
RefinedObjectClassDefinitionImpl rOcDef = new RefinedObjectClassDefinitionImpl(resourceType.getOid(), objectClassDef); rOcDef.setKind(kind); rOcDef.setIntent(intent); rOcDef.setDisplayName(rOcDef.schemaHandlingObjectTypeDefinitionType.getDisplayName()); } else { if (objectClassDef.getDisplayName() != null) { rOcDef.setDisplayName(objectClassDef.getDisplayName()); rOcDef.setDescription(rOcDef.schemaHandlingObjectTypeDefinitionType.getDescription()); rOcDef.setDefault(rOcDef.schemaHandlingObjectTypeDefinitionType.isDefault()); } else { rOcDef.setDefault(objectClassDef.isDefaultInAKind()); rOcDef.setBaseContext(rOcDef.schemaHandlingObjectTypeDefinitionType.getBaseContext());
void parseAttributes(RefinedResourceSchema rSchema, String contextDescription) throws SchemaException { if (schemaHandlingObjectTypeDefinitionType == null) { // this is definition from schema. We already have all we need. return; } parseAttributesFrom(rSchema, getObjectClassDefinition(), false, contextDescription); for (RefinedObjectClassDefinition auxiliaryObjectClassDefinition: auxiliaryObjectClassDefinitions) { parseAttributesFrom(rSchema, auxiliaryObjectClassDefinition, true, contextDescription); } // Check for extra attribute definitions in the account type for (ResourceAttributeDefinitionType attrDefType : schemaHandlingObjectTypeDefinitionType.getAttribute()) { if (!containsAttributeDefinition(attrDefType.getRef()) && !RefinedAttributeDefinitionImpl.isIgnored(attrDefType)) { throw new SchemaException("Definition of attribute " + attrDefType.getRef() + " not found in object class " + originalObjectClassDefinition .getTypeName() + " as defined in " + contextDescription); } } parseProtected(this, schemaHandlingObjectTypeDefinitionType, getPrismContext()); }
ResourceAttributeDefinitionType attrDefType = findAttributeDefinitionType(road.getName(), schemaHandlingObjectTypeDefinitionType, attrContextDescription); rSchema.getPrismContext(), "in "+kind+" type " + intent + ", in " + contextDescription); if (!auxiliary) { processIdentifiers(rAttrDef, ocDef); if (containsAttributeDefinition(rAttrDef.getName())) { if (auxiliary) { continue; add(rAttrDef);
private static void parseObjectTypesFromSchema(RefinedResourceSchemaImpl rSchema, ResourceType resourceType, PrismContext prismContext, String contextDescription) throws SchemaException { RefinedObjectClassDefinition rAccountDefDefault = null; for(ObjectClassComplexTypeDefinition objectClassDef: rSchema.getOriginalResourceSchema().getObjectClassDefinitions()) { QName objectClassname = objectClassDef.getTypeName(); if (rSchema.getRefinedDefinition(objectClassname) != null) { continue; } RefinedObjectClassDefinition rOcDef = RefinedObjectClassDefinitionImpl.parseFromSchema(objectClassDef, resourceType, rSchema, prismContext, "object class " + objectClassname + ", in " + contextDescription); if (objectClassDef.getKind() == ShadowKindType.ACCOUNT && rOcDef.isDefault()) { if (rAccountDefDefault == null) { rAccountDefDefault = rOcDef; } else { throw new SchemaException("More than one default account definitions ("+rAccountDefDefault+", "+rOcDef+") in " + contextDescription); } } rSchema.add(rOcDef); } } //endregion
@Override public String debugDump(int indent) { return debugDump(indent, null, this); }
private static void parseProtected(RefinedObjectClassDefinition rAccountDef, ResourceObjectTypeDefinitionType accountTypeDefType, PrismContext prismContext) throws SchemaException { for (ResourceObjectPatternType protectedType: accountTypeDefType.getProtected()) { ResourceObjectPattern protectedPattern = convertToPattern(protectedType, rAccountDef, prismContext); rAccountDef.getProtectedObjectPatterns().add(protectedPattern); } }
public RefinedObjectClassDefinition getObjectClassDefinition() throws SchemaException, ConfigurationException, ObjectNotFoundException, CommunicationException, ExpressionEvaluationException { if (objectClassDefinition == null) { if (useRefinedDefinition) { if (originalShadow != null) { objectClassDefinition = getRefinedSchema().determineCompositeObjectClassDefinition(originalShadow, additionalAuxiliaryObjectClassQNames); } else if (shadowCoordinates != null && !shadowCoordinates.isWildcard()) { objectClassDefinition = getRefinedSchema().determineCompositeObjectClassDefinition(shadowCoordinates); } } else { if (shadowCoordinates.getObjectClass() == null) { throw new IllegalStateException("No objectclass"); } ObjectClassComplexTypeDefinition origObjectClassDefinition = getRefinedSchema().getOriginalResourceSchema().findObjectClassDefinition(shadowCoordinates.getObjectClass()); if (origObjectClassDefinition == null) { throw new SchemaException("No object class definition for "+shadowCoordinates.getObjectClass()+" in original resource schema for "+getResource()); } else { objectClassDefinition = RefinedObjectClassDefinitionImpl.parseFromSchema(origObjectClassDefinition, getResource(), getRefinedSchema(), getResource().asPrismObject().getPrismContext(), "objectclass "+origObjectClassDefinition+" in "+getResource()); } } } return objectClassDefinition; }
@Override public String debugDump() { return debugDump(0); }
@NotNull @Override public RefinedObjectClassDefinition deepClone(Map<QName, ComplexTypeDefinition> ctdMap, Map<QName, ComplexTypeDefinition> onThisPath, Consumer<ItemDefinition> postCloneAction) { // TODO TODO TODO (note that in original implementation this was also missing...) RefinedObjectClassDefinitionImpl clone = new RefinedObjectClassDefinitionImpl(resourceOid, originalObjectClassDefinition.deepClone(ctdMap, onThisPath, postCloneAction)); copyDefinitionData(clone); shared = false; return clone; }
@Override public String debugDump(int indent) { return RefinedObjectClassDefinitionImpl.debugDump(indent, layer, this); }
@Override public PrismObjectDefinition<ShadowType> getObjectDefinition() { if (objectDefinition == null) { objectDefinition = constructObjectDefinition(this); } return objectDefinition; }