in scim-core/src/main/java/org/apache/directory/scim/core/schema/SchemaRegistry.java [166:197]
private ResourceType generateResourceType(ScimResourceType scimResourceType, List<Class<? extends ScimExtension>> extensionList) throws InvalidExtensionException {
ResourceType resourceType = new ResourceType();
resourceType.setDescription(scimResourceType.description());
resourceType.setId(scimResourceType.id());
resourceType.setName(scimResourceType.name());
resourceType.setEndpoint(scimResourceType.endpoint());
resourceType.setSchemaUrn(scimResourceType.schema());
if (extensionList != null) {
List<ResourceType.SchemaExtensionConfiguration> extensionSchemaList = new ArrayList<>();
for (Class<? extends ScimExtension> se : extensionList) {
ScimExtensionType extensionType = se.getAnnotation(ScimExtensionType.class);
if (extensionType == null) {
throw new InvalidExtensionException("Missing annotation: @ScimExtensionType on ScimExtensionL " + se.getSimpleName());
}
ResourceType.SchemaExtensionConfiguration ext = new ResourceType.SchemaExtensionConfiguration();
ext.setRequired(extensionType.required());
ext.setSchemaUrn(extensionType.id());
extensionSchemaList.add(ext);
}
resourceType.setSchemaExtensions(extensionSchemaList);
}
return resourceType;
}