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; } }
private void add(RefinedObjectClassDefinition rOcDef) { ((ResourceSchemaImpl) originalResourceSchema).add(rOcDef); // TODO FIXME }