private static void parseObjectTypeDefsFromSchemaHandling(RefinedResourceSchemaImpl rSchema, ResourceType resourceType, SchemaHandlingType schemaHandling, Collection<ResourceObjectTypeDefinitionType> resourceObjectTypeDefs, ShadowKindType impliedKind, PrismContext prismContext, String contextDescription) throws SchemaException { if (resourceObjectTypeDefs == null) { return; } Map<ShadowKindType, RefinedObjectClassDefinition> defaults = new HashMap<>(); for (ResourceObjectTypeDefinitionType accountTypeDefType: resourceObjectTypeDefs) { RefinedObjectClassDefinition rOcDef = RefinedObjectClassDefinitionImpl.parse(accountTypeDefType, resourceType, rSchema, impliedKind, prismContext, contextDescription); if (rOcDef.isDefault()) { if (defaults.containsKey(rOcDef.getKind())) { throw new SchemaException("More than one default "+rOcDef.getKind()+" definitions ("+defaults.get(rOcDef.getKind())+", "+rOcDef+") in " + contextDescription); } else { defaults.put(rOcDef.getKind(), rOcDef); } } rSchema.add(rOcDef); } }
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