use of com.evolveum.midpoint.schema.processor.ResourceSchemaImpl in project midpoint by Evolveum.
the class RefinedResourceSchemaImpl method getResourceSchema.
public static ResourceSchema getResourceSchema(PrismObject<ResourceType> resource, PrismContext prismContext) throws SchemaException {
Element resourceXsdSchema = ResourceTypeUtil.getResourceXsdSchema(resource);
if (resourceXsdSchema == null) {
return null;
}
Object userDataEntry = resource.getUserData(USER_DATA_KEY_PARSED_RESOURCE_SCHEMA);
if (userDataEntry != null) {
if (userDataEntry instanceof ResourceSchema) {
return (ResourceSchema) userDataEntry;
} else {
throw new IllegalStateException("Expected ResourceSchema under user data key " + USER_DATA_KEY_PARSED_RESOURCE_SCHEMA + "in " + resource + ", but got " + userDataEntry.getClass());
}
} else {
InternalMonitor.recordResourceSchemaParse();
ResourceSchemaImpl parsedSchema = ResourceSchemaImpl.parse(resourceXsdSchema, "resource schema of " + resource, prismContext);
if (parsedSchema == null) {
throw new IllegalStateException("Parsed schema is null: most likely an internall error");
}
resource.setUserData(USER_DATA_KEY_PARSED_RESOURCE_SCHEMA, parsedSchema);
parsedSchema.setNamespace(ResourceTypeUtil.getResourceNamespace(resource));
return parsedSchema;
}
}
Aggregations