From dec62602c4db15819fb44b14a4029c7d806469c7 Mon Sep 17 00:00:00 2001 From: delchev Date: Sat, 8 Aug 2026 11:13:48 +0300 Subject: [PATCH] feat: Dirigible 14.17.0, integration focus, full Java support, IDE as home Iapetus is the integrations edition: Apache Camel is the focus, there is no BPM and no Intent Driven tooling, and its users land in the Workbench rather than on the platform's Home launchpad. Version - codbex-platform-parent 13.6.0 -> 14.17.0 (parents track Dirigible releases 1:1). Full Java support - engine-java (in-process javac + the bean container), data-store-java (Java @Entity -> Hibernate), the api-modules-java SDK, ide-java-lsp (JDT.LS), ide-java-debug (the DAP bridge) and the Java / Java Debug views. - Documented caveat: the SDK exposes org.eclipse.dirigible.sdk.bpm, so api-modules-java -> api-bpm -> engine-bpm-flowable puts the BPM engine on the classpath. Excluding api-bpm builds and boots but leaves sdk.bpm broken the moment client code touches it, so the engine stays and only the BPM tooling is left out (no BPMN editor, no Processes perspective, no BPM menus or templates - none of which this edition ever had). No Intent Driven tooling - There is no engine-intent, so resources-builder (the conversational Builder shell) is excluded from group-ui rather than shipped with nothing behind it. resources-inbox is excluded for the same reason: the BPM task inbox has no BPM surface here. Home is the Workbench - DIRIGIBLE_HOME_URL=services/web/shell-ide/, overriding the 14.16.0+ default of services/web/home/. The launchpad stays reachable at /services/web/home/; only the / redirect changes. - Consequence: upstream's HomepageRedirectIT asserts the platform default and cannot pass here, so it leaves the common suite. The edition's own HomePageIT (Workbench welcome view on /) guards the override, unchanged. Camel - No dependency change was needed: template-camel is an aggregator that already carries template-camel-cron-route and template-camel-http-route (verified on a running instance - both starters are offered). Annotated as such so nobody adds them again. UI overrides (forks of upstream files, drifted) - menu-help: port to the current module shape (ESM + the conditional OpenAPI entry) and move translations/ to i18n/, the only folder locales.js scans - the Bulgarian help-menu catalog had been dead. - view-welcome: fix the misspelled `require` form-item flag, point the GitHub link at codbex-iapetus instead of codbex-hyperion, and use the BlimpKit theme variables. Verified: quick-build, formatter:validate and unit tests green; every dirigible jar in the fat jar resolves at 14.17.0. On a running instance / answers 302 to /services/web/shell-ide/, the Java debugger config and Debug view answer 200, the intent endpoints, the Builder shell and the Inbox all 404, the shell switcher lists no builderShell, and the template list offers both Camel route starters. Co-Authored-By: Claude Opus 5 --- CLAUDE.md | 14 ++ application/pom.xml | 48 +++++++ .../src/main/resources/dirigible.properties | 4 + .../dirigible/menu-help/configs/help.js | 132 ++++++++++-------- .../bg-BG/translation.json | 0 .../en-US/translation.json | 0 .../dirigible/view-welcome/js/welcome.js | 2 +- .../dirigible/view-welcome/welcome.html | 6 +- .../tests/DirigibleCommonTestSuiteIT.java | 1 - pom.xml | 2 +- 10 files changed, 144 insertions(+), 65 deletions(-) rename components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/{translations => i18n}/bg-BG/translation.json (100%) rename components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/{translations => i18n}/en-US/translation.json (100%) diff --git a/CLAUDE.md b/CLAUDE.md index 7873a49..2b1e30d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -8,6 +8,20 @@ Iapetus is a [codbex product](https://www.codbex.com/products/): **"Integrations Technically, this repo is a thin packaging/assembly layer on top of the [Eclipse Dirigible](https://github.com/eclipse/dirigible) low-code platform. Almost all behavior comes from `org.eclipse.dirigible:dirigible-components-*` dependencies; this repo wires them together (selecting Camel/integration plus IDE and operations components), brands them, and adds a handful of custom UI components. There is very little custom Java here (just the Spring Boot bootstrap class). +**Three deliberate departures from the platform defaults**, all in the edition's own configuration: + +- **Camel is the focus.** `engine-camel`, the Integrations (Karavan) modeler, the Camel menu and the `template-camel` aggregator (which carries the cron-route and http-route starters) are in; **no BPM tooling** - no BPMN editor, no Processes perspective, no BPM menus or templates. The Flowable engine itself does arrive on the classpath, because the client Java SDK exposes `org.eclipse.dirigible.sdk.bpm`: `api-modules-java` -> `api-bpm` -> `engine-bpm-flowable`. Excluding `api-bpm` builds and boots but leaves `sdk.bpm` broken the moment client code touches it, so the engine stays and only the tooling is left out. +- **No Intent Driven tooling.** There is no `engine-intent`, and `resources-builder` (the conversational Builder shell) is excluded from `group-ui`. `resources-inbox` is excluded for the same "nothing backs it" reason - the BPM task inbox has no BPM surface here. +- **Home is the Workbench IDE.** `DIRIGIBLE_HOME_URL=services/web/shell-ide/` in `dirigible.properties`, overriding the platform's 14.16.0+ default of `services/web/home/`. The launchpad stays reachable at `/services/web/home/`; only the `/` redirect changes. Consequence: upstream's `HomepageRedirectIT` asserts the platform default and cannot run here - it was dropped from the common suite, and the edition's own `HomePageIT` (Workbench welcome view on `/`) guards the override. + +**Java support is full**: `engine-java` (in-process `javac` + the bean container), `data-store-java` (Java `@Entity` -> Hibernate), the `api-modules-java` SDK, `ide-java-lsp` (JDT.LS), `ide-java-debug` (the DAP bridge) and the Java / Java Debug views. + +## Dirigible version + +The version is pinned by `codbex-platform-parent` through its `dirigible.version` property; parent releases track Dirigible releases 1:1 (parent 14.17.0 -> Dirigible 14.17.0), so bumping the edition means bumping the parent. Bumps are not mechanical - Dirigible removes things: the OData engine was extracted in 14.16.0 (un-managing `com.codbex.olingo:olingo-odata2-lib`, which fails a version-less declaration at model-read time) and the AngularJS/TypeScript application templates went with it. + +**The UI overrides under `components/ui/` are forks of upstream files** - diff them against the matching Dirigible module on every bump; they drift silently (translations must live in `i18n//*.json`, the only folder `platform-core/extension-services/locales.js` scans). + ## Module layout Maven multi-module reactor (parent `pom.xml`, packaging `pom`): diff --git a/application/pom.xml b/application/pom.xml index 4684a59..aa1f5a7 100644 --- a/application/pom.xml +++ b/application/pom.xml @@ -18,6 +18,7 @@ org.eclipse.dirigible dirigible-components-template-camel + org.eclipse.dirigible @@ -98,6 +99,43 @@ dirigible-components-engine-camel + + + org.eclipse.dirigible + dirigible-components-engine-java + + + org.eclipse.dirigible + dirigible-components-data-store-java + + + org.eclipse.dirigible + dirigible-components-api-modules-java + + + org.eclipse.dirigible + dirigible-components-ide-java-lsp + + + org.eclipse.dirigible + dirigible-components-ide-java-debug + + + org.eclipse.dirigible + dirigible-components-ui-view-java + + + org.eclipse.dirigible + dirigible-components-ui-view-java-debug + + org.eclipse.dirigible dirigible-components-engine-typescript @@ -149,6 +187,16 @@ org.eclipse.dirigible dirigible-components-ui-menu-help + + + org.eclipse.dirigible + dirigible-components-resources-builder + + + + org.eclipse.dirigible + dirigible-components-resources-inbox + diff --git a/application/src/main/resources/dirigible.properties b/application/src/main/resources/dirigible.properties index e1afdfa..eebb031 100644 --- a/application/src/main/resources/dirigible.properties +++ b/application/src/main/resources/dirigible.properties @@ -1,6 +1,10 @@ # General DIRIGIBLE_MULTI_TENANT_MODE=false +# Land on the Workbench IDE, not on the platform's Home launchpad (the 14.16.0+ default is +# services/web/home/). This is a tooling edition, so the IDE is home. +DIRIGIBLE_HOME_URL=services/web/shell-ide/ + DIRIGIBLE_PRODUCT_NAME=${project.title} DIRIGIBLE_PRODUCT_VERSION=${project.version} DIRIGIBLE_PRODUCT_COMMIT_ID=${git.commit.id} diff --git a/components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/configs/help.js b/components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/configs/help.js index b3c3507..4d4d756 100644 --- a/components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/configs/help.js +++ b/components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/configs/help.js @@ -9,69 +9,83 @@ * SPDX-FileCopyrightText: 2022 codbex or an codbex affiliate company and contributors * SPDX-License-Identifier: EPL-2.0 */ -exports.getMenu = () => ({ - systemMenu: true, - id: 'help', - menu: { - translation: { - key: 'common:help', - }, - label: 'Help', - items: [ - { - translation: { - key: 'menu-help:portal', - }, - label: 'Help Portal', - action: 'open', - link: 'https://www.codbex.com/documentation/tooling/', - separator: false +import { repository } from "sdk/platform"; + +export function getMenu() { + const hasOpenApi = repository.getResource('/registry/public/view-swagger/project.json').exists(); + const config = { + systemMenu: true, + id: 'help', + menu: { + translation: { + key: 'common:help', }, - { - translation: { - key: 'menu-help:support', + label: 'Help', + items: [ + { + translation: { + key: 'menu-help:portal', + }, + label: 'Help Portal', + action: 'open', + link: 'https://www.codbex.com/documentation/tooling/', + separator: false }, - label: 'Contact Support', - action: 'open', - link: 'https://www.codbex.com/contact/', - separator: false - }, - { - translation: { - key: 'menu-help:pricing', + { + translation: { + key: 'menu-help:support', + }, + label: 'Contact Support', + action: 'open', + link: 'https://www.codbex.com/contact/', + separator: false }, - label: 'Pricing Plans', - action: 'open', - link: 'https://www.codbex.com/pricing/', - separator: false - }, - { - translation: { - key: 'menu-help:whatsNew', + { + translation: { + key: 'menu-help:pricing', + }, + label: 'Pricing Plans', + action: 'open', + link: 'https://www.codbex.com/pricing/', + separator: false }, - label: 'What\'s New', - action: 'open', - link: 'https://www.codbex.com/technology', - separator: false - }, - { - translation: { - key: 'menu-help:updates', + { + translation: { + key: 'menu-help:whatsNew', + }, + label: 'What\'s New', + action: 'open', + link: 'https://www.codbex.com/technology', + separator: false }, - label: 'Check for Updates', - action: 'open', - link: 'https://www.codbex.com/products/', - separator: true - }, - { - id: 'about', - translation: { - key: 'menu-help:about', + { + translation: { + key: 'menu-help:updates', + }, + label: 'Check for Updates', + action: 'open', + link: 'https://www.codbex.com/products/', + separator: true }, - label: 'About', - action: 'openWindow', - separator: false - } - ] + { + id: 'about', + translation: { + key: 'menu-help:about', + }, + label: 'About', + action: 'openWindow', + separator: false + } + ] + } + }; + if (hasOpenApi) { + config.menu.items.splice(5, 0, { + label: 'OpenAPI', + action: 'open', + link: '/services/web/view-swagger/ui/', + separator: true + }); } -}); \ No newline at end of file + return config; +}; diff --git a/components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/translations/bg-BG/translation.json b/components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/i18n/bg-BG/translation.json similarity index 100% rename from components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/translations/bg-BG/translation.json rename to components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/i18n/bg-BG/translation.json diff --git a/components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/translations/en-US/translation.json b/components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/i18n/en-US/translation.json similarity index 100% rename from components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/translations/en-US/translation.json rename to components/ui/menu-help/src/main/resources/META-INF/dirigible/menu-help/i18n/en-US/translation.json diff --git a/components/ui/view-welcome/src/main/resources/META-INF/dirigible/view-welcome/js/welcome.js b/components/ui/view-welcome/src/main/resources/META-INF/dirigible/view-welcome/js/welcome.js index 41f0d27..689820f 100644 --- a/components/ui/view-welcome/src/main/resources/META-INF/dirigible/view-welcome/js/welcome.js +++ b/components/ui/view-welcome/src/main/resources/META-INF/dirigible/view-welcome/js/welcome.js @@ -65,7 +65,7 @@ welcome.controller('WelcomeController', ($scope, $http, WorkspaceService, Templa controlType: 'input', type: 'text', label: template.parameters[i].label, - require: true, + required: template.parameters[i].required === true, }; } return form; diff --git a/components/ui/view-welcome/src/main/resources/META-INF/dirigible/view-welcome/welcome.html b/components/ui/view-welcome/src/main/resources/META-INF/dirigible/view-welcome/welcome.html index 0c5bb43..49f5818 100644 --- a/components/ui/view-welcome/src/main/resources/META-INF/dirigible/view-welcome/welcome.html +++ b/components/ui/view-welcome/src/main/resources/META-INF/dirigible/view-welcome/welcome.html @@ -12,8 +12,8 @@ @@ -64,7 +64,7 @@

Welcome to Iapetus

All source code is licensed under the Eclipse Public License - v 2.0 and maintained at - GitHub. + GitHub.

diff --git a/integration-tests/src/test/java/com/codbex/iapetus/integration/tests/DirigibleCommonTestSuiteIT.java b/integration-tests/src/test/java/com/codbex/iapetus/integration/tests/DirigibleCommonTestSuiteIT.java index 68c7744..33cf2fb 100644 --- a/integration-tests/src/test/java/com/codbex/iapetus/integration/tests/DirigibleCommonTestSuiteIT.java +++ b/integration-tests/src/test/java/com/codbex/iapetus/integration/tests/DirigibleCommonTestSuiteIT.java @@ -32,7 +32,6 @@ CustomSecurityIT.class, // DatabasePerspectiveIT.class, // GitPerspectiveIT.class, // - HomepageRedirectIT.class, // MailIT.class, // MessagingFacadeIT.class, // SecurityIT.class, // diff --git a/pom.xml b/pom.xml index 41888c3..6d7b9d5 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.codbex.platform codbex-platform-parent - 13.6.0 + 14.17.0 codbex-iapetus-parent