Skip to content

Add dynamic executor loading to /flow/meta api - #1156

Open
VIHANGAGIT wants to merge 3 commits into
wso2:masterfrom
VIHANGAGIT:daon-connector-improvement
Open

Add dynamic executor loading to /flow/meta api#1156
VIHANGAGIT wants to merge 3 commits into
wso2:masterfrom
VIHANGAGIT:daon-connector-improvement

Conversation

@VIHANGAGIT

@VIHANGAGIT VIHANGAGIT commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Purpose

This pull request introduces support for extension executors in the flow management API, allowing the system to dynamically include metadata for executors contributed by deployed extensions. It also refactors how legacy executors are handled for backward compatibility and sets up infrastructure for resolving executor metadata.

Related Issues

Related PRs

Approach

Extension Executor Metadata Support:

  • Added a new ExecutorMetadata model class to represent metadata about extension executors, including fields such as name, displayName, description, tags, icon, requiresConnection, and associatedAuthenticator. (ExecutorMetadata.java)
  • Updated the FlowMetaResponse model to include a new extensionExecutors field, along with its getter, setter, and helper methods, so that API responses can return metadata for extension executors.

Legacy Executors Refactoring:

  • Introduced a LegacyExecutors inner class in FlowEndpointConstants to encapsulate hardcoded executor names, recovery factors, and authenticator-to-executor mappings for backward compatibility. This will allow the system to union dynamic executors on top of these legacy definitions. (FlowEndpointConstants.java)

Infrastructure and Dependency Updates:

  • Added a dependency on the org.wso2.carbon.identity.flow.execution.engine module, which is likely required for the new executor metadata resolution logic. (pom.xml)
  • Added an ExecutorMetadataResolver utility import and an instance field in AbstractMetaResponseHandler, preparing the handler for resolving executor metadata from extensions.
  • Cleaned up and reorganized imports in affected files to support the new features and remove unused legacy executor imports. (AbstractMetaResponseHandler.java)

@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: f22efd88-c230-4015-b3fd-efab498ce603

📥 Commits

Reviewing files that changed from the base of the PR and between 9fc4169 and 1656837.

⛔ Files ignored due to path filters (1)
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/gen/java/org/wso2/carbon/identity/api/server/flow/management/v1/FlowMetaResponse.java is excluded by !**/gen/**
📒 Files selected for processing (4)
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/constants/FlowEndpointConstants.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/response/handlers/AbstractMetaResponseHandler.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/utils/Utils.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/resources/flow.yaml
💤 Files with no reviewable changes (1)
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/utils/Utils.java
🚧 Files skipped from review as they are similar to previous changes (3)
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/constants/FlowEndpointConstants.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/resources/flow.yaml
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/response/handlers/AbstractMetaResponseHandler.java

📝 Walkthrough

Summary

  • Added dynamic executor loading to the /flow/meta API.
  • Exposed extension executor metadata through FlowMetaResponse.
  • Preserved legacy executor definitions through FlowEndpointConstants.LegacyExecutors.
  • Added ExecutorMetadataResolver to combine legacy and extension executors.
  • Updated flow handlers and validation to use resolved executor metadata and required executor groups.
  • Added the flow execution engine dependency.

Walkthrough

The Flow Management v1 module resolves legacy and dynamically registered flow executors through ExecutorMetadataResolver. It exposes extension executor metadata in FlowMetaResponse, resolves connection mappings, and supports behavior-flag-based executor selection. Flow handlers provide legacy baselines and required executor groups. Generic validation now uses those groups. OpenAPI schemas describe extension executor metadata.

Sequence Diagram(s)

sequenceDiagram
  participant Client
  participant FlowMetaHandler
  participant ExecutorMetadataResolver
  participant FlowExecutorRegistry
  participant FlowMetaResponse
  Client->>FlowMetaHandler: request flow metadata
  FlowMetaHandler->>ExecutorMetadataResolver: resolve executors
  FlowMetaHandler->>ExecutorMetadataResolver: resolve connections and required groups
  ExecutorMetadataResolver->>FlowExecutorRegistry: discover registered executors
  FlowExecutorRegistry-->>ExecutorMetadataResolver: return executor metadata
  ExecutorMetadataResolver-->>FlowMetaHandler: return supported names and extensions
  FlowMetaHandler->>FlowMetaResponse: create response with extensionExecutors
  FlowMetaResponse-->>Client: return flow metadata
Loading
🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 47.06% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check ⚠️ Warning The description explains the purpose and approach but omits most mandatory template sections, including goals, tests, security checks, documentation, and release notes. Complete the mandatory template sections, especially goals, user stories, release note, documentation, tests, security checks, certification, migrations, and test environment.
✅ Passed checks (3 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly identifies the main change: dynamic executor loading for the /flow/meta API.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/response/handlers/RegistrationFlowMetaHandler.java (1)

78-90: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Copy the superclass baseline before mutating it.

Line 81 mutates the list returned by super.getLegacyExecutorBaseline() directly. AskPasswordFlowMetaHandler and PasswordRecoveryFlowMetaHandler wrap the result in a new ArrayList. The current code works because the base method returns a fresh mutable list, but the copy keeps the three handlers consistent and protects against a future base change that returns an immutable list.

♻️ Proposed refactor
-        List<String> supportedExecutors = super.getLegacyExecutorBaseline();
+        List<String> supportedExecutors = new ArrayList<>(super.getLegacyExecutorBaseline());
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/response/handlers/RegistrationFlowMetaHandler.java`
around lines 78 - 90, Update
RegistrationFlowMetaHandler.getLegacyExecutorBaseline to wrap the list returned
by super.getLegacyExecutorBaseline() in a new mutable ArrayList before adding
the executor constants, matching AskPasswordFlowMetaHandler and
PasswordRecoveryFlowMetaHandler.
components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/utils/ExecutorMetadataResolver.java (1)

152-182: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick win

Consider memoizing declaredExecutors() per instance.

declaredExecutors() calls the engine on every invocation. resolve(), getConnectionExecutorMap(), and getExecutorsWithTag() each trigger a separate call within one request. A single memoized field would keep the resolved view consistent and reduce repeated service lookups.

Also note that Line 176 adds extension names without a duplicate check, while metadata de-duplicates by name. If the engine can return two entries with the same name, supportedExecutorNames contains a duplicate.

♻️ Proposed refactor
     private final String flowType;
     private final List<String> legacyBaseline;
 
+    private List<FlowExecutorInfo> declared;
     private List<String> supportedExecutorNames;
     private List<FlowExecutorInfo> declaredExecutors() {
 
+        if (declared != null) {
+            return declared;
+        }
         try {
-            return FlowExecutorMetadataService.getInstance().getComposerExecutors(flowType);
+            declared = FlowExecutorMetadataService.getInstance().getComposerExecutors(flowType);
         } catch (Throwable e) {
             LOG.warn("Failed to resolve dynamically registered executors for flow type: " + flowType
                     + ". Falling back to the built in executor list.", e);
-            return Collections.emptyList();
+            declared = Collections.emptyList();
         }
+        return declared;
     }
         LinkedHashMap<String, ExecutorMetadata> metadata = new LinkedHashMap<>();
         for (FlowExecutorInfo extension : extensions) {
-            names.add(extension.getName());
-            metadata.put(extension.getName(), toModel(extension));
+            if (metadata.containsKey(extension.getName()) || names.contains(extension.getName())) {
+                continue;
+            }
+            names.add(extension.getName());
+            metadata.put(extension.getName(), toModel(extension));
         }

Also applies to: 211-226

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/utils/ExecutorMetadataResolver.java`
around lines 152 - 182, Memoize the result of declaredExecutors() once per
ExecutorMetadataResolver instance and reuse that field in resolve(),
getConnectionExecutorMap(), and getExecutorsWithTag() so all lookups share one
consistent view. While building supportedExecutorNames in resolve(), only add an
extension name when it is not already present, matching metadata’s name
de-duplication behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/utils/ExecutorMetadataResolver.java`:
- Around line 74-78: Resolve the Javadoc reference in the parameter
documentation for the resolver method by replacing the unresolved {`@link`
FlowTypes} reference with a fully qualified type name or plain text. Keep the
description of the flow type unchanged.

---

Nitpick comments:
In
`@components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/response/handlers/RegistrationFlowMetaHandler.java`:
- Around line 78-90: Update
RegistrationFlowMetaHandler.getLegacyExecutorBaseline to wrap the list returned
by super.getLegacyExecutorBaseline() in a new mutable ArrayList before adding
the executor constants, matching AskPasswordFlowMetaHandler and
PasswordRecoveryFlowMetaHandler.

In
`@components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/utils/ExecutorMetadataResolver.java`:
- Around line 152-182: Memoize the result of declaredExecutors() once per
ExecutorMetadataResolver instance and reuse that field in resolve(),
getConnectionExecutorMap(), and getExecutorsWithTag() so all lookups share one
consistent view. While building supportedExecutorNames in resolve(), only add an
extension name when it is not already present, matching metadata’s name
de-duplication behavior.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: dc4f220b-b77d-4faa-a795-5e9d9423313c

📥 Commits

Reviewing files that changed from the base of the PR and between 9e144a5 and 7597d1e.

⛔ Files ignored due to path filters (2)
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/gen/java/org/wso2/carbon/identity/api/server/flow/management/v1/ExecutorMetadata.java is excluded by !**/gen/**
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/gen/java/org/wso2/carbon/identity/api/server/flow/management/v1/FlowMetaResponse.java is excluded by !**/gen/**
📒 Files selected for processing (9)
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/pom.xml
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/constants/FlowEndpointConstants.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/response/handlers/AbstractMetaResponseHandler.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/response/handlers/AskPasswordFlowMetaHandler.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/response/handlers/PasswordRecoveryFlowMetaHandler.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/response/handlers/RegistrationFlowMetaHandler.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/utils/ExecutorMetadataResolver.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/utils/Utils.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/resources/flow.yaml

@VIHANGAGIT
VIHANGAGIT force-pushed the daon-connector-improvement branch from 7597d1e to 6a340d7 Compare August 7, 2026 08:36
@coderabbitai

coderabbitai Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/utils/ExecutorMetadataResolver.java`:
- Around line 218-226: Cache the result of the executor lookup shared by
declaredExecutors(), resolve(), getConnectionExecutorMap(), and
getExecutorsWithTag() so each resolver output in a request uses the same
executor set. Ensure the cache also preserves the fallback empty list when
lookup fails, and reuse the cached value instead of invoking
FlowExecutorMetadataService.getInstance().getComposerExecutors(flowType)
multiple times.
- Around line 175-179: Update the extension loop in resolve() to de-duplicate
executor names before adding them to names, while still updating metadata using
the same accepted name and corresponding FlowExecutorInfo. Ensure duplicate
registry entries do not produce repeated names and preserve the existing
last-entry metadata behavior.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 1087e3d5-285e-4350-a5b6-a928b2b5cc1c

📥 Commits

Reviewing files that changed from the base of the PR and between 9e144a5 and 6a340d7.

⛔ Files ignored due to path filters (2)
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/gen/java/org/wso2/carbon/identity/api/server/flow/management/v1/ExecutorMetadata.java is excluded by !**/gen/**
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/gen/java/org/wso2/carbon/identity/api/server/flow/management/v1/FlowMetaResponse.java is excluded by !**/gen/**
📒 Files selected for processing (9)
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/pom.xml
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/constants/FlowEndpointConstants.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/response/handlers/AbstractMetaResponseHandler.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/response/handlers/AskPasswordFlowMetaHandler.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/response/handlers/PasswordRecoveryFlowMetaHandler.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/response/handlers/RegistrationFlowMetaHandler.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/utils/ExecutorMetadataResolver.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/utils/Utils.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/resources/flow.yaml
🚧 Files skipped from review as they are similar to previous changes (8)
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/resources/flow.yaml
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/utils/Utils.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/response/handlers/AskPasswordFlowMetaHandler.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/constants/FlowEndpointConstants.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/response/handlers/AbstractMetaResponseHandler.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/response/handlers/RegistrationFlowMetaHandler.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/response/handlers/PasswordRecoveryFlowMetaHandler.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/pom.xml

@VIHANGAGIT
VIHANGAGIT force-pushed the daon-connector-improvement branch from 6a340d7 to 2c1fe13 Compare August 7, 2026 09:48
*
* @return Mutable list of executor names, in the order they should be presented.
*/
protected List<String> getLegacyExecutorBaseline() {

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

getSupportedExecutors

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need of 2 methods to get common and another to extensions

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will require all additional executors added for each flow to be defined in FlowEndpointConstants. Current approach is cleaner.

protected List<String> getLegacyExecutorBaseline() {

List<String> supportedExecutors = super.getSupportedExecutors();
List<String> supportedExecutors = super.getLegacyExecutorBaseline();

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

get the union to here

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This requires all additional executors beyond common ones to be added to Constants. Current approach is cleaner

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/utils/ExecutorMetadataResolver.java (1)

222-227: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Narrow the registry failure boundary. An Error from FlowExecutorMetadataService is converted into incomplete metadata. Catch the registry exception type, or Exception if a broad fallback is required.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/utils/ExecutorMetadataResolver.java`
around lines 222 - 227, Update the exception handler around
FlowExecutorMetadataService.getInstance().getComposerExecutors(flowType) to
catch the registry’s specific exception type, or Exception if a broad fallback
is required, instead of Throwable; preserve the existing warning and empty-list
fallback for caught failures.

Source: MCP tools

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In
`@components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/utils/ExecutorMetadataResolver.java`:
- Around line 222-227: Update the exception handler around
FlowExecutorMetadataService.getInstance().getComposerExecutors(flowType) to
catch the registry’s specific exception type, or Exception if a broad fallback
is required, instead of Throwable; preserve the existing warning and empty-list
fallback for caught failures.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 788d1ef4-9f55-4207-b3af-50842f21deaf

📥 Commits

Reviewing files that changed from the base of the PR and between 2c1fe13 and 9fc4169.

⛔ Files ignored due to path filters (1)
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/gen/java/org/wso2/carbon/identity/api/server/flow/management/v1/ExecutorMetadata.java is excluded by !**/gen/**
📒 Files selected for processing (3)
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/response/handlers/PasswordRecoveryFlowMetaHandler.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/utils/ExecutorMetadataResolver.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/resources/flow.yaml
🚧 Files skipped from review as they are similar to previous changes (2)
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/java/org/wso2/carbon/identity/api/server/flow/management/v1/response/handlers/PasswordRecoveryFlowMetaHandler.java
  • components/org.wso2.carbon.identity.api.server.flow.management/org.wso2.carbon.identity.api.server.flow.management.v1/src/main/resources/flow.yaml

@VIHANGAGIT
VIHANGAGIT force-pushed the daon-connector-improvement branch from 9fc4169 to 1656837 Compare August 12, 2026 10:13
@VIHANGAGIT
VIHANGAGIT force-pushed the daon-connector-improvement branch from 1656837 to 8369c4b Compare August 12, 2026 10:58
description: Short explanation of what this step does
example: Verifies the user's identity with an external verification provider.
behaviorFlags:
type: array

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make this a first class variable rather than an array

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant