in scim-server/src/main/java/org/apache/directory/scim/server/rest/BaseResourceTypeResourceImpl.java [312:334]
private T processFilterAttributeExtensions(Repository<T> repository, T resource, Set<AttributeReference> attributeReferences, Set<AttributeReference> excludedAttributeReferences) throws ScimException {
ScimProcessingExtension annotation = repository.getClass()
.getAnnotation(ScimProcessingExtension.class);
if (annotation != null) {
Class<? extends ProcessingExtension>[] value = annotation.value();
for (Class<? extends ProcessingExtension> class1 : value) {
ProcessingExtension processingExtension = CDI.current().select(class1).get();
if (processingExtension instanceof AttributeFilterExtension) {
AttributeFilterExtension attributeFilterExtension = (AttributeFilterExtension) processingExtension;
ScimRequestContext scimRequestContext = new ScimRequestContext(attributeReferences, excludedAttributeReferences);
try {
resource = (T) attributeFilterExtension.filterAttributes(resource, scimRequestContext);
log.debug("Resource now - " + resource.toString());
} catch (ClientFilterException e) {
throw new ScimException(Status.fromStatusCode(e.getStatus()), e.getMessage(), e);
}
}
}
}
return resource;
}