diff --git a/scim-client/src/main/java/edu/psu/swe/scim/util/ScimExtensionUtil.java b/scim-client/src/main/java/edu/psu/swe/scim/util/ScimExtensionUtil.java new file mode 100644 index 0000000..05f036f --- /dev/null +++ b/scim-client/src/main/java/edu/psu/swe/scim/util/ScimExtensionUtil.java @@ -0,0 +1,40 @@ +package edu.psu.swe.scim.util; + +import java.util.Collection; +import java.util.Map; + +import edu.psu.swe.scim.spec.extension.ScimExtensionRegistry; +import edu.psu.swe.scim.spec.resources.ScimExtension; +import edu.psu.swe.scim.spec.resources.ScimResource; + +/** + * + * @author mez5001 + * + * This class exposes the SCIM extension methods without requiring that the project using the client knows + * how the ScimExtensionRegistry works + */ +public class ScimExtensionUtil { + + /** + * Register a single extension for a single resource + * @param rClass ScimResource class + * @param eClass Extension class + */ + public static void registerExtension(Class rClass, Class eClass) { + ScimExtensionRegistry.getInstance().registerExtension(rClass, eClass); + } + + /** + * Register multiple extensions through a map + * @param extensions Map containing all of the ScimResources and the accompanying Extensions + */ + public static void registerExtensions(Map, Collection>> extensions) { + for(Map.Entry, Collection>> entry : extensions.entrySet()) { + Class resource = entry.getKey(); + for(Class extension : entry.getValue()) { + ScimExtensionRegistry.getInstance().registerExtension(resource, extension); + } + } + } +}