Conversation
There was a problem hiding this comment.
Pull request overview
This PR introduces a Form component with trigger capabilities, along with supporting infrastructure for form-based workflow triggers. The implementation includes webhook request handling improvements, GraphQL API support for trigger definitions, and a REST API for retrieving form configurations.
Key changes include:
- Introduction of a new Form component with a "New Form Request" trigger that supports various field types (text, email, date, file uploads, etc.)
- Refactoring of webhook parameter parsing to handle nested maps and improve value conversion logic using a unified
parseMapmethod - Addition of GraphQL schema and REST endpoints for accessing trigger definitions and form configurations
Reviewed changes
Copilot reviewed 13 out of 14 changed files in this pull request and generated 13 comments.
Show a summary per file
| File | Description |
|---|---|
| settings.gradle.kts | Adds the new form component module to the build configuration |
| AbstractWebhookTriggerController.java | Refactors parameter parsing by unifying parseFormUrlencodedParams into a generalized parseMap method with improved nested structure and value conversion support |
| trigger-definition.graphqls | Defines GraphQL schema for TriggerDefinition type with associated properties and query |
| PlatformConfigurationAuthorizeHttpRequestContributor.java | Configures public access to /api/trigger-form/** endpoints for unauthenticated form submissions |
| TriggerFormApiController.java | Implements REST endpoint to retrieve form configuration based on workflow execution ID |
| TriggerDefinitionGraphQlController.java | Exposes TriggerDefinition via GraphQL query interface |
| build.gradle.kts | Adds platform-security-web-api dependency for security configuration |
| TriggerFormDTO.java | Defines data transfer object structure for form configurations including inputs and styling options |
| WebhookRequestDeserializer.java | Refactors checkValue method to recursively handle nested maps and improve FileEntry mapping logic |
| form.svg | Provides SVG icon for the Form component |
| NewFormRequestTrigger.java | Implements the core trigger logic for handling form submissions with extensive field type support |
| FormConstants.java | Defines constants and FieldType enum for form configuration |
| FormComponentHandler.java | Registers the Form component with the component framework |
| form/build.gradle.kts | Defines build configuration for the new form component module |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
...mpl/src/main/java/com/bytechef/platform/configuration/web/rest/TriggerFormApiController.java
Outdated
Show resolved
Hide resolved
...mpl/src/main/java/com/bytechef/platform/configuration/web/rest/TriggerFormApiController.java
Outdated
Show resolved
Hide resolved
...odules/components/form/src/main/java/com/bytechef/component/form/constant/FormConstants.java
Outdated
Show resolved
Hide resolved
...components/form/src/main/java/com/bytechef/component/form/trigger/NewFormRequestTrigger.java
Outdated
Show resolved
Hide resolved
...ervice/src/main/java/com/bytechef/platform/component/jackson/WebhookRequestDeserializer.java
Outdated
Show resolved
Hide resolved
...components/form/src/main/java/com/bytechef/component/form/trigger/NewFormRequestTrigger.java
Show resolved
Hide resolved
...components/form/src/main/java/com/bytechef/component/form/trigger/NewFormRequestTrigger.java
Outdated
Show resolved
Hide resolved
...components/form/src/main/java/com/bytechef/component/form/trigger/NewFormRequestTrigger.java
Outdated
Show resolved
Hide resolved
...components/form/src/main/java/com/bytechef/component/form/trigger/NewFormRequestTrigger.java
Outdated
Show resolved
Hide resolved
...components/form/src/main/java/com/bytechef/component/form/trigger/NewFormRequestTrigger.java
Outdated
Show resolved
Hide resolved
19c28e4 to
4391818
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 20 out of 21 changed files in this pull request and generated 6 comments.
Comments suppressed due to low confidence (2)
server/libs/platform/platform-webhook/platform-webhook-rest/platform-webhook-rest-api/src/main/java/com/bytechef/platform/webhook/rest/AbstractWebhookTriggerController.java:366
- If a key ends with "[" or ".", after splitting, one of the resulting elements in the keys array will be an empty string. This empty string will be used as a map key at line 385 or 392, which could lead to unexpected behavior. Consider filtering out empty strings from the keys array after splitting, or adding validation to handle this edge case.
// Split the key on [ or .
String[] keys = key.split("\\[|\\.");
Map<String, Object> currentMap = multiMap;
for (int i = 0; i < keys.length; i++) {
String currentKey = keys[i];
// Remove any trailing ]
if (currentKey.endsWith("]")) {
currentKey = currentKey.substring(0, currentKey.length() - 1);
}
server/libs/platform/platform-webhook/platform-webhook-rest/platform-webhook-rest-api/src/main/java/com/bytechef/platform/webhook/rest/AbstractWebhookTriggerController.java:394
- If a key path has already been set to a non-Map value and subsequent entries try to use it as a nested map, line 394 will throw a ClassCastException. For example, if "user" is set to a string value first, then "user.name" is processed, the code will attempt to cast the string to a Map. Consider adding validation to check if the existing value is a Map before casting, or handle the key collision scenario appropriately.
currentMap.putIfAbsent(currentKey, new HashMap<String, Object>());
currentMap = (Map<String, Object>) currentMap.get(currentKey);
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
...components/form/src/main/java/com/bytechef/component/form/trigger/NewFormRequestTrigger.java
Outdated
Show resolved
Hide resolved
...components/form/src/main/java/com/bytechef/component/form/trigger/NewFormRequestTrigger.java
Show resolved
Hide resolved
.../configuration/web/security/config/PlatformConfigurationAuthorizeHttpRequestContributor.java
Show resolved
Hide resolved
...ervice/src/main/java/com/bytechef/platform/component/jackson/WebhookRequestDeserializer.java
Outdated
Show resolved
Hide resolved
...ervice/src/main/java/com/bytechef/platform/component/jackson/WebhookRequestDeserializer.java
Outdated
Show resolved
Hide resolved
...components/form/src/main/java/com/bytechef/component/form/trigger/NewFormRequestTrigger.java
Outdated
Show resolved
Hide resolved
…nested maps and improve FileEntry mapping logic.
…method and improving value conversion logic
1a57c0f to
1768179
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 20 out of 21 changed files in this pull request and generated 9 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
...ervice/src/main/java/com/bytechef/platform/component/jackson/WebhookRequestDeserializer.java
Show resolved
Hide resolved
...components/form/src/main/java/com/bytechef/component/form/trigger/NewFormRequestTrigger.java
Show resolved
Hide resolved
...t-api/src/main/java/com/bytechef/platform/webhook/rest/AbstractWebhookTriggerController.java
Outdated
Show resolved
Hide resolved
...components/form/src/main/java/com/bytechef/component/form/trigger/NewFormRequestTrigger.java
Show resolved
Hide resolved
...mpl/src/main/java/com/bytechef/platform/configuration/web/rest/TriggerFormApiController.java
Show resolved
Hide resolved
...ervice/src/main/java/com/bytechef/platform/component/jackson/WebhookRequestDeserializer.java
Outdated
Show resolved
Hide resolved
...components/form/src/main/java/com/bytechef/component/form/trigger/NewFormRequestTrigger.java
Show resolved
Hide resolved
...components/form/src/main/java/com/bytechef/component/form/trigger/NewFormRequestTrigger.java
Show resolved
Hide resolved
...components/form/src/main/java/com/bytechef/component/form/trigger/NewFormRequestTrigger.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 25 out of 26 changed files in this pull request and generated 2 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
...mpl/src/main/java/com/bytechef/platform/configuration/web/rest/TriggerFormApiController.java
Outdated
Show resolved
Hide resolved
...mpl/src/main/java/com/bytechef/platform/configuration/web/rest/TriggerFormApiController.java
Outdated
Show resolved
Hide resolved
8dc2599 to
756e381
Compare
|
|



checkValueinWebhookRequestDeserializerto handle nested maps and improve FileEntry mapping logic.parseMapmethod and improving value conversion logic