oscerd opened a new pull request, #23113: URL: https://github.com/apache/camel/pull/23113
## Motivation Keycloak 26 introduced an [Organizations](https://www.keycloak.org/docs/latest/server_admin/index.html#_managing-organizations) primitive that allows realms to model multi-tenant scenarios — companies, customer accounts, etc. — with members and identity-provider links. The Keycloak admin client `26.0.8` already on `camel-keycloak`'s classpath exposes the Organizations API via `OrganizationsResource` / `OrganizationResource` / `OrganizationMembersResource` / `OrganizationIdentityProvidersResource`, but none of it was surfaced as Camel operations. This change wires the full Organizations CRUD plus member and identity-provider management into the existing `camel-keycloak` producer. JIRA: https://issues.apache.org/jira/browse/CAMEL-23452 ## Changes ### New operations on ``KeycloakOperations`` | Operation | Description | | --- | --- | | `createOrganization` | Create a new organization (header-based or `pojoRequest=true` with `OrganizationRepresentation`). | | `updateOrganization` | Update an existing organization (POJO request). | | `deleteOrganization` | Delete an organization by ID. | | `getOrganization` | Retrieve an organization by ID. | | `listOrganizations` | List all organizations in a realm (optional `FIRST_RESULT` / `MAX_RESULTS` paging). | | `searchOrganizations` | Search organizations by free-text (name / alias / domain), with optional paging. | | `addOrganizationMember` | Add an existing realm user as a member of an organization. | | `removeOrganizationMember` | Remove a user from an organization. | | `listOrganizationMembers` | List members of an organization (optional paging). | | `linkOrganizationIdentityProvider` | Link an existing realm IdP to an organization. | | `unlinkOrganizationIdentityProvider` | Unlink an IdP from an organization. | | `listOrganizationIdentityProviders` | List IdPs linked to an organization. | ### New headers on ``KeycloakConstants`` `ORGANIZATION_ID`, `ORGANIZATION_NAME`, `ORGANIZATION_ALIAS`, `ORGANIZATION_DESCRIPTION`, `ORGANIZATION_REDIRECT_URL`, `ORGANIZATION_DOMAIN`, `ORGANIZATION_SEARCH`. Member operations re-use the existing `USER_ID`, IdP-link operations re-use `IDP_ALIAS`, and paging operations re-use `FIRST_RESULT` / `MAX_RESULTS`. ### Implementation `KeycloakProducer` follows the existing switch-on-operation pattern. Every new method validates required headers (`MISSING_REALM_NAME`, `MISSING_ORGANIZATION_ID`, `MISSING_ORGANIZATION_NAME`, `MISSING_ORGANIZATION_MEMBER_ID`, `MISSING_ORGANIZATION_IDP_ALIAS`) and returns either the JAX-RS `Response`, a representation POJO, a `List<...>`, or a fixed success string — matching the conventions used by existing operations. ### Tests * `KeycloakProducerTest` adds Mockito-based unit tests for all 12 operations plus missing-name / missing-id validation. * `KeycloakTestInfraIT` exercises the full lifecycle (create → list → get → search → add-member → list-members → remove-member → link-IdP → list-IdPs → unlink-IdP → cleanup) against the testcontainers-based Keycloak from `camel-test-infra-keycloak`, with a dedicated cleanup step ordered before the existing IdP/realm teardown. ### Documentation `keycloak-component.adoc` is updated: * New `Organization Management` entry in the **Supported Operations** summary. * New `=== Organization Operations` section with end-to-end Java examples covering all 12 operations. ## How to test ```bash cd components/camel-keycloak mvn clean install # unit tests mvn verify -Pit # integration tests (testcontainers) ``` All 91 unit tests pass locally (28 of them in `KeycloakProducerTest`, including the 11 new organization tests). ## Notes * No new dependencies. The Organizations API is already provided by `keycloak-admin-client` 26.0.8 currently on the classpath. * No public API signatures are changed; only additions to the operations enum and constants. --- _Claude Code on behalf of Andrea Cosentino_ -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
