Class GrouperAdobeProvisioningTargetNativeSync
GrouperProvisioningTargetNativeSync: builds native target reporting
beans for sync-back to the generic grouper_prov_group / grouper_prov_user tables.
Both groups and users are captured from the raw Adobe JSON (JSON Pointer paths,
like SCIM), hooked at the API-commands seam (GrouperAdobeApiCommands.retrieveAdobeGroups
and retrieveAdobeUsers/retrieveAdobeUser) where the full JSON node is in scope.
This avoids losing any Adobe field that the GrouperAdobeGroup / GrouperAdobeUser
typed beans do not model; operators can capture any JSON field via nativeAttributesGroups
/ nativeAttributesEntities with a name and optional JSON-Pointer path.
Groups additionally pair with canRetrieveGroup=false: Adobe has no by-id group
endpoint, so the framework always reads all groups and the commands register every group. Users
keep canRetrieveEntity=true (Adobe reads a single user by email), so only the capture
site moved -- the routing is unchanged.
Memberships are still derived from the GrouperAdobeUser typed bean's groups
set (captureMembershipsFromUser(edu.internet2.middleware.grouper.app.adobe.GrouperAdobeUser, java.util.Map<java.lang.String, java.lang.String>)); only the group/user object capture is JSON-based.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbuildNativeGroupFromJson(com.fasterxml.jackson.databind.JsonNode groupNode) Build a native group bean from the raw Adobe group JSON.buildNativeUserFromJson(com.fasterxml.jackson.databind.JsonNode userNode) Build a native user bean from the raw Adobe user JSON.voidcaptureGroupJson(com.fasterxml.jackson.databind.JsonNode groupNode) Build + record an Adobe group from its raw JSON.static voidcaptureGroupJsonFromCurrentProvisioner(com.fasterxml.jackson.databind.JsonNode groupNode) Capture an Adobe group (from its raw JSON) against the current provisioner's sync.static voidcaptureMembershipDeleteFromCurrentProvisioner(String groupTargetId, String userTargetId) Write-track a successful Adobe membership remove (disassociateUsersFromGroup) against the current provisioner: drop(groupTargetId, userTargetId)from the native membership map so the end-of-run flush deletes its grouper_prov_mship row.static voidcaptureMembershipInsertFromCurrentProvisioner(String groupTargetId, String userTargetId) Write-track a successful Adobe membership add (associateUsersToGroup) against the current provisioner: record(groupTargetId, userTargetId)in the native membership map.voidcaptureMembershipsFromUser(GrouperAdobeUser grouperAdobeUser, Map<String, String> groupNameToTargetId) Translate an Adobe user'sgroupsset (group-name strings) into native membership beans against the suppliedgroupNameToTargetIdindex, and record them.static voidcaptureMembershipsFromUserForCurrentProvisioner(GrouperAdobeUser grouperAdobeUser, Map<String, String> groupNameToTargetId) Translate an Adobe user's group-name memberships into native records against the supplied group-name → target-id index, and record them on the current provisioner.voidcaptureUserJson(com.fasterxml.jackson.databind.JsonNode userNode) Build + record an Adobe user from its raw JSON.static voidcaptureUserJsonFromCurrentProvisioner(com.fasterxml.jackson.databind.JsonNode userNode) Capture an Adobe user (from its raw JSON) against the current provisioner's sync.protected List<GrouperProvisioningNativeAttributeConfig>Per-protocol sensible-default attribute list for entities (users) when the operator hasn't configurednativeAttributesEntities.protected List<GrouperProvisioningNativeAttributeConfig>Per-protocol sensible-default attribute list for groups.Methods inherited from class edu.internet2.middleware.grouper.app.provisioning.GrouperProvisioningTargetNativeSync
clearSyncBackGroupForDelete, clearSyncBackGroupForRead, clearSyncBackUserForDelete, clearSyncBackUserForRead, configuredNativeAttributeConfigsEntities, configuredNativeAttributeConfigsGroups, effectiveNativeAttributeConfigsEntities, effectiveNativeAttributeConfigsGroups, getGrouperProvisioner, grouperToNativeNameExceptionsEntities, grouperToNativeNameExceptionsGroups, markSyncBackGroupForDelete, markSyncBackGroupForRead, markSyncBackUserForDelete, markSyncBackUserForRead, recordTargetNativeGroup, recordTargetNativeGroupWrite, recordTargetNativeMembershipDelete, recordTargetNativeMembershipInsert, recordTargetNativeMembershipReplace, recordTargetNativeMemberships, recordTargetNativeUser, recordTargetNativeUserWrite, removeTargetNativeGroup, removeTargetNativeUser, setGrouperProvisioner
-
Constructor Details
-
GrouperAdobeProvisioningTargetNativeSync
public GrouperAdobeProvisioningTargetNativeSync()
-
-
Method Details
-
getDefaultNativeAttributeConfigsEntities
Description copied from class:GrouperProvisioningTargetNativeSyncPer-protocol sensible-default attribute list for entities (users) when the operator hasn't configurednativeAttributesEntities. Override in protocol subclasses to return a curated list (e.g. SCIM core schema fields). Default is empty — for LDAP this means "no extra capture beyond what the regular target query returned," which is the historical behavior.- Overrides:
getDefaultNativeAttributeConfigsEntitiesin classGrouperProvisioningTargetNativeSync
-
getDefaultNativeAttributeConfigsGroups
Description copied from class:GrouperProvisioningTargetNativeSyncPer-protocol sensible-default attribute list for groups. SeeGrouperProvisioningTargetNativeSync.getDefaultNativeAttributeConfigsEntities().- Overrides:
getDefaultNativeAttributeConfigsGroupsin classGrouperProvisioningTargetNativeSync
-
buildNativeGroupFromJson
public GrouperProvisioningTargetNativeGroup buildNativeGroupFromJson(com.fasterxml.jackson.databind.JsonNode groupNode) Build a native group bean from the raw Adobe group JSON.targetIdis read from/groupId; the attributes map is populated for each entry inGrouperProvisioningTargetNativeSync.effectiveNativeAttributeConfigsGroups()(operator-configured or default) by JSON Pointer. Returns null when the JSON is missing or has nogroupId. -
buildNativeUserFromJson
public GrouperProvisioningTargetNativeUser buildNativeUserFromJson(com.fasterxml.jackson.databind.JsonNode userNode) Build a native user bean from the raw Adobe user JSON.targetIdis read from/id; the attributes map is populated for each entry inGrouperProvisioningTargetNativeSync.effectiveNativeAttributeConfigsEntities()(operator-configured or default) by JSON Pointer. Returns null when the JSON is missing or has noid. -
captureGroupJson
public void captureGroupJson(com.fasterxml.jackson.databind.JsonNode groupNode) Build + record an Adobe group from its raw JSON. No-op when sync-back is off or id-less. -
captureUserJson
public void captureUserJson(com.fasterxml.jackson.databind.JsonNode userNode) Build + record an Adobe user from its raw JSON. No-op when sync-back is off or id-less. -
captureMembershipsFromUser
public void captureMembershipsFromUser(GrouperAdobeUser grouperAdobeUser, Map<String, String> groupNameToTargetId) Translate an Adobe user'sgroupsset (group-name strings) into native membership beans against the suppliedgroupNameToTargetIdindex, and record them. No-op if reporting is off or the input is empty. -
captureGroupJsonFromCurrentProvisioner
public static void captureGroupJsonFromCurrentProvisioner(com.fasterxml.jackson.databind.JsonNode groupNode) Capture an Adobe group (from its raw JSON) against the current provisioner's sync. No-op if there's no current provisioner or the active provisioner isn't an Adobe one. Called from the commands seam (GrouperAdobeApiCommands.retrieveAdobeGroups) for every group in the org. -
captureUserJsonFromCurrentProvisioner
public static void captureUserJsonFromCurrentProvisioner(com.fasterxml.jackson.databind.JsonNode userNode) Capture an Adobe user (from its raw JSON) against the current provisioner's sync. No-op if there's no current provisioner or the active provisioner isn't an Adobe one. Called from the commands seam (GrouperAdobeApiCommands.retrieveAdobeUsers/retrieveAdobeUser). -
captureMembershipsFromUserForCurrentProvisioner
public static void captureMembershipsFromUserForCurrentProvisioner(GrouperAdobeUser grouperAdobeUser, Map<String, String> groupNameToTargetId) Translate an Adobe user's group-name memberships into native records against the supplied group-name → target-id index, and record them on the current provisioner. -
captureMembershipInsertFromCurrentProvisioner
public static void captureMembershipInsertFromCurrentProvisioner(String groupTargetId, String userTargetId) Write-track a successful Adobe membership add (associateUsersToGroup) against the current provisioner: record(groupTargetId, userTargetId)in the native membership map. No-op out of cycle or for a non-Adobe provisioner. -
captureMembershipDeleteFromCurrentProvisioner
public static void captureMembershipDeleteFromCurrentProvisioner(String groupTargetId, String userTargetId) Write-track a successful Adobe membership remove (disassociateUsersFromGroup) against the current provisioner: drop(groupTargetId, userTargetId)from the native membership map so the end-of-run flush deletes its grouper_prov_mship row.
-