public static RefinedResourceSchema parse(ResourceType resourceType, PrismContext prismContext) throws SchemaException {
ResourceSchema originalResourceSchema = getResourceSchema(resourceType, prismContext);
if (originalResourceSchema == null) {
return null;
}
String contextDescription = "definition of "+resourceType;
RefinedResourceSchemaImpl rSchema = new RefinedResourceSchemaImpl(originalResourceSchema);
SchemaHandlingType schemaHandling = resourceType.getSchemaHandling();
if (schemaHandling != null) {
parseObjectTypeDefsFromSchemaHandling(rSchema, resourceType, schemaHandling,
schemaHandling.getObjectType(), null, prismContext, contextDescription);
}
parseObjectTypesFromSchema(rSchema, resourceType, prismContext, contextDescription);
for (RefinedObjectClassDefinition rOcDef: rSchema.getRefinedDefinitions()) {
((RefinedObjectClassDefinitionImpl) rOcDef).parseAssociations(rSchema);
((RefinedObjectClassDefinitionImpl) rOcDef).parseAuxiliaryObjectClasses(rSchema);
}
for (RefinedObjectClassDefinition rOcDef: rSchema.getRefinedDefinitions()) {
((RefinedObjectClassDefinitionImpl) rOcDef).parseAttributes(rSchema, contextDescription);
}
return rSchema;
}