• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

eclipse-aascw / aas-core-codegen / 35240523421
90%

Build:
DEFAULT BRANCH: main
Ran 17 Sep 2026 03:35PM UTC
Jobs 3
Files 269
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

17 Sep 2026 03:28PM UTC coverage: 85.413% (+0.03%) from 85.382%
35240523421

push

github

web-flow
Compose the Java JSON de-serialization (#704)

Three quarters of the generated ``Jsonization.java`` was
de-serialization, and two thirds of that was one shape repeated. Every
``case`` of a property loop inlined its own procedure: a check for a
JSON null, a cast to an array for a list or a tuple carrying an error of
its own, the call, a check of the error, a ``prependSegment`` naming
that property and a ``castTo`` of the failure.

Nothing names the property any more, because the loop already has it.
The key *is* the JSON name, so ``prependName(parsed, key)`` replaces the
436 lines which spelled it out, and a ``case`` now carries nothing but
the call and the assignment:

    case "semanticId": {
      final Reporting.Result<? extends IReference> parsed =
        tryReferenceFrom(value);
      if (parsed.isError()) {
        return prependName(parsed, key);
      }
      theSemanticId = parsed.getResult();
      break;
    }

``parseArray`` and ``parseTuple{N}`` take the JSON node rather than an
already-cast array, which deletes the inline casts. A list and a tuple
are the only types with no function of their own to be named after, so
they -- and only they -- are composed out of the parsers of their items
into a function named by the moniker of the type:
``parseListOf_IExtension``. Eighteen of them serve all 124 list-typed
properties of the AAS meta-model. Composing at the call site instead
would be just as fast, as a method reference to a static method captures
nothing and the JVM caches it; it would, however, leave one
``invokedynamic`` call site per property rather than one per item type.

The moniker grammar naming a composed parser is the one the XML side
already uses, moved verbatim from ``java/lib/_generate_xmlization.py``
to ``java/common.py``.

The model type is now handled exactly once on every path. It is checked
before the loop instead of in it, so a wrong one is reported without
de-serializing any of the properties first, and its ``case`` on... (continued)

211 of 213 new or added lines in 3 files covered. (99.06%)

34318 of 40179 relevant lines covered (85.41%)

2.56 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
93.18
1.19% aas_core_codegen/java/lib/_generate_jsonization.py
Jobs
ID Job ID Ran Files Coverage
1 3.12 - 35240523421.1 17 Sep 2026 03:36PM UTC 269
85.41
GitHub Action Run
2 3.11 - 35240523421.2 17 Sep 2026 03:36PM UTC 269
85.41
GitHub Action Run
3 3.10 - 35240523421.3 17 Sep 2026 03:36PM UTC 269
85.41
GitHub Action Run
Source Files on build 35240523421
  • Tree
  • List 269
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 6b622555 on github
  • Prev Build on main (#35227145065)
  • Next Build on main (#35242364759)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc