Skip to content

feat(templates): client-Java service starters and a Harmonia page starter (#6582) - #6617

Merged
delchev merged 2 commits into
masterfrom
feat/templates-java-starters
Aug 8, 2026
Merged

feat(templates): client-Java service starters and a Harmonia page starter (#6582)#6617
delchev merged 2 commits into
masterfrom
feat/templates-java-starters

Conversation

@delchev

@delchev delchev commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Closes #6582. Part of the umbrella #6591 (one application stack: Harmonia UI + client Java).

What changes

Starter Was Is
Hello World service.mjsresponse.println @Controller + @Get returning the greeting
TypeScript (API)Java (API) service.tsresponse + security/user sdk.http.{Controller,Get} + sdk.security.User, returning a record (serialized to JSON)
Database Access (API) service.mjsdb/query sdk.db.Database.query against SystemDB
HTTP Client (API) service.mjshttp/client sdk.http.HttpClient
Data Tables (UI) AngularJS page (ng-app, blimpKit, platform-links) standalone Harmonia page — platform webjars, a fetch call, x-h-table, no build step
React starter React/TSX project removed — a second UI stack has no counterpart in a one-stack platform

The Java starters follow the job/listener/websocket starters migrated in #6581: generated into
{{javaPackageName}}/{{javaClassName}}.java with a package-qualified @Component bean name, so two
projects can scaffold the same service without colliding in the shared client container.

template-typescript loses its TypeScript-logo template.svg (it would misrepresent a Java starter)
and uses the sap-icon--source-code glyph instead; the module directories and registered orders are
unchanged, so the New-project menu keeps its shape.

A platform bug this surfaced

HttpClientFacade.parseOptions returned null for a null options document while all seven facade
methods (plus their async twins) dereference the result immediately, so the SDK's no-options overload
HttpClient.get(url) failed with an NPE instead of performing the request — the JavaScript API never
hit it because it always sends an options object. Fixed in api-http with unit tests
(HttpClientFacadeTest); it is the second commit here because the migrated starter is what found it.

Verification (running instance, all five scaffolded through the real generation endpoint, published)

  • GET /services/java/demohello/demohello/GreeterHello World!
  • GET /services/java/demoapi/demoapi/Api{"message":"Hello World","user":"admin","date":…}
  • GET /services/java/demodb/demodb/DbAccess → the DIRIGIBLE_EXTENSIONS result set as JSON
  • GET /services/java/demohttp/demohttp/Fetcher → the remote response ("statusCode": 200) — 500 before the api-http fix
  • the Harmonia page renders in Chrome: toolbar x-h-select, Lucide icon, live table; switching the
    collection re-fetches and re-columns; clean console
  • Problems view clean for every scaffolded project; template list shows "Java (API)", no React entry
  • mvn -T 1C clean package -P quick-build green

🤖 Generated with Claude Code

delchev and others added 2 commits August 8, 2026 09:16
…rter (#6582)

The four service starters (Hello World, TypeScript (API) - now "Java (API)",
Database Access, HTTP Client) scaffolded @aerokit/sdk JavaScript/TypeScript;
they now scaffold client Java @controller services, following the job /
listener / websocket starters migrated in #6581 - package-qualified bean name,
generated into {{javaPackageName}}/{{javaClassName}}.java.

template-html scaffolded an AngularJS + BlimpKit page. The IDE stays
AngularJS/BlimpKit, but this template scaffolds an *application* page, so it is
now a standalone Harmonia (Alpine.js) page: platform webjars, a fetch call and
an x-h-table, no build step.

template-react is removed outright - a second UI stack has no counterpart in a
one-stack platform, and the Harmonia page starter already covers "scaffold me a
page".

Part of #6591.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
)

HttpClientFacade.parseOptions returned null for a null options document while
every caller - all seven facade methods plus their async twins - dereferences
the result immediately, so the client Java SDK's no-options overload
(org.eclipse.dirigible.sdk.http.HttpClient.get(url), which passes null) failed
with an NPE on isAuthenticationEnabled() instead of performing the request.
Surfaced by the migrated HTTP Client starter.

The JavaScript API never hit this because it always sends an options object.
parseOptions now yields the defaults for a null or blank document.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@delchev
delchev force-pushed the feat/templates-java-starters branch from 17fcff6 to 7cac44e Compare August 8, 2026 06:16
@delchev
delchev merged commit 9cad331 into master Aug 8, 2026
9 checks passed
@delchev
delchev deleted the feat/templates-java-starters branch August 8, 2026 06:19
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.

templates: client-Java + Harmonia counterparts for the starters; remove the React starter

1 participant