Skip to content

JSON gets its own section, and ajson stops inviting app code in - #323

Merged
oblomov-dev merged 1 commit into
mainfrom
claude/ecstatic-ptolemy-qk4yyq
Sep 14, 2026
Merged

oblomov-dev merged 1 commit into
mainfrom
claude/ecstatic-ptolemy-qk4yyq

Conversation

@oblomov-dev

Copy link
Copy Markdown
Member

Three things on this site said different, incompatible things about JSON.

technical/tools/ajson invited app code in

It said "Use it anywhere in your code" with a z2ui5_cl_ajson=>parse( ) example — the exact call the abap2UI5 linter reports as non-released-api, and the exact thing resources/deprecations says two pages away not to do. What ships under that name is a mirrored copy of an external project, resynced automatically, so the invitation was to depend on something nobody reviews for app-facing impact.

The page now says what ajson is — the framework's model engine, what json = abap_true is implemented with — and sends the reader to the section below for what to write instead.

That section did not exist

The guidance was four sentences buried inside the "Utility classes" warning: not where anybody looks for it, and not an anchor anything could link. It is now ### JSON is built and read by hand, with the outbound and inbound halves written out, plus two limits the short version did not carry:

  • "the payloads are flat" is true of the samples and not guaranteed by the marshaller. Lib.js projectValue passes an object- or array-valued control property through unchanged, so a nested node is possible. Binding the value is the answer there, not a bigger parser.
  • a payload the APP composed needs escaping on both ends, which the two framework-written samples do not show, because a quote the user typed ends the value early for a substring_before reader. Z2UI5_CL_SMPS_APP_489 is linked as the worked case.

Two links were 404s, and the site's own gate said so

check:samples is already red on main over exactly these two lines:

resources/deprecations: links src/00/z2ui5_cl_smp_app_507.clas.abap in abap2UI5/samples, which is not there on main
resources/deprecations: links src/00/z2ui5_cl_smp_app_509.clas.abap in abap2UI5/samples, which is not there on main

Both moved to src/01 in abap2UI5/samples#843. Fixed, and the three new source links this PR adds are validated by the same gate.

Also

resources/api.md and public/api/client-api.json are regenerated in the same pass — they were stale against framework main by one entry, cs_event-store_data. check:api-reference was red on main over that.

Verified

npm run test 251/251 pass (spelling gate included — marshalledmarshaled applied via npm run fix:spelling) · check:version, check:conventions, check:api-names, check:api-reference, check:playground clean · check:samples down from 11 problems to 9, the two removed being exactly the broken links; the remaining 9 are pre-existing "generated samples block is out of date" on unrelated pages and are left alone.

npm run build cannot run in this sandbox — it fetches https://abap2ui5.github.io/playground/sitemap.xml and the proxy answers 403. Confirmed pre-existing by stashing the change and re-running; unrelated to this PR.

🤖 Generated with Claude Code

https://claude.ai/code/session_011Fu4Wn6gtdBwFDtnzEMxwb


Generated by Claude Code

Three things on this site said different, incompatible things about JSON.

`technical/tools/ajson` told the reader "Use it anywhere in your code" with a
`z2ui5_cl_ajson=>parse( )` example - the exact call the abap2UI5 linter reports
as `non-released-api`, and the exact thing `resources/deprecations` says two
pages away not to do. What ships under that name is a MIRRORED copy of an
external project, resynced automatically, so the invitation was to depend on
something nobody reviews for app-facing impact. The page now says what ajson is
- the framework's model engine, what `json = abap_true` is implemented with -
and sends the reader to the section below for what to write instead.

That section did not exist: the guidance was four sentences buried in the
"Utility classes" warning, which is not where anybody looks for it and is not
an anchor anything could link. It is now `### JSON is built and read by hand`,
with the outbound and inbound halves written out, plus two limits the short
version did not carry:

- "the payloads are flat" is true of the samples and NOT guaranteed by the
  marshaller - Lib.js `projectValue` passes an object- or array-valued control
  property through unchanged, so a nested node is possible. Binding the value
  is the answer there, not a bigger parser.
- a payload the APP composes needs escaping on both ends, which the two
  framework-written samples do not show, because a quote the user typed ends
  the value early for a `substring_before` reader. Z2UI5_CL_SMPS_APP_489 is
  linked as the worked case.

The two sample links in the `custom_mapper` table pointed at `src/00`, where
those classes have not been since abap2UI5/samples#843 moved them to `src/01`.
`check:samples` was already red on main over exactly those two lines - it is
green again, and the three new source links it also validates are present.

`resources/api.md` and `client-api.json` are regenerated in the same pass: they
were stale against framework main by one entry, `cs_event-store_data`.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011Fu4Wn6gtdBwFDtnzEMxwb
@oblomov-dev
oblomov-dev merged commit 8bc4504 into main Sep 14, 2026
1 check passed
@oblomov-dev
oblomov-dev deleted the claude/ecstatic-ptolemy-qk4yyq branch September 14, 2026 16:43
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.

2 participants