Skip to content
CAI
Software that uses CAICheck a score

JohT/alias

77.5

Strong · 21 September 2026

4.9k

lines of production code

Java

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a Java library that enables the definition of short, business-friendly aliases for class types to simplify serialization and deserialization. It provides specific integrations for Axon Framework 5 and JSON-B, allowing polymorphic types and event messages to be serialized using these aliases instead of verbose fully qualified class names. The core functionality relies on compile-time annotation processing to generate resource bundles that map aliases to concrete classes, supporting features like multiple aliases per type and external type mapping.

Features

Initial project scaffolding and documentation

The repository has been initialized with core documentation and configuration files, including a README explaining the type-alias library, a CHANGELOG generated via a new mustache template, a SECURITY policy, and a COMMANDS guide. Build hygiene is established with .gitignore and .gitattributes, while automated dependency updates are configured via renovate.json, which explicitly disables automatic JDK updates to preserve compatibility and restricts Axon Framework upgrades to their respective major versions (4.x and 5.x).

(repo-wide) · high confidence

Integration test adds Axon-based messaging boundary and adapters

The integration test module now includes a complete messaging boundary layer and Axon-specific adapters to drive the test scenario. This adds command and query message types (e.g., AccountNicknameQuery, FetchNicknamesQuery), boundary interfaces for command/query gateways, event processing, and aggregate event handling, along with Axon implementations that wire these to the Axon framework (CommandGateway, QueryGateway, TrackingEventProcessor, AggregateLifecycle). It also introduces custom annotations (CommandTargetAggregateIdentifier, CommandTargetAggregateVersion, CommandModelAggregate, etc.) to decouple the API from Axon internals, configures type aliases via a ResourceBundle for serialization, and sets up aggregate configuration with snapshotting and CDI-based parameter resolution.

type-alias-axon-serializer-integration-test/src/main · high confidence

New module for serializing dynamic types with JSON-B

This change introduces the \type-alias-jsonb-typereference\ module, which provides a \TypeReferenceEnhancer\ adapter for the Java API for JSON Binding (JSON-B). This adapter solves the problem of deserializing lists of interface or abstract types (such as \Animal\) by injecting a \\_\_typeref\ property during serialization and using a \TypeReferenceResolver\ to map that reference back to the concrete class during deserialization. The module includes a default resolver based on \ResourceBundle\ (looking for a \TypeAlias\ bundle) and a fallback to full class names, along with a \JsonbConfigProvider\ SPI to allow custom configurations. The diff also includes integration tests demonstrating the serialization of polymorphic collections (e.g., a \Zoo\ containing \Monkey\ and \Horse\ instances) and validation logic for the type alias resource bundles.

type-alias-jsonb-typereference · high confidence

Support for multiple aliases per type and external type mapping

The type-alias example now demonstrates that a single class can be registered under multiple distinct alias names (e.g., 'PrimaryAlias' and 'SecondaryAlias' both mapping to the same type), and that aliases can be defined for external types (such as \java.lang.Integer\ and \java.lang.String\) via annotations on classes or package-info files. This allows users to look up these external types by their custom alias keys in the generated resource bundles.

type-alias-example/src · high confidence

Support for multiple type aliases with primary designation

The library now supports defining multiple aliases for a single type, allowing users to map one class to several names. To ensure generated resource bundles remain distinct, one alias must be designated as the primary one using the new \primary = true\ attribute on the \@TypeAlias\ annotation. This feature is available starting from version 1.1.0.

type-alias · high confidence

Support for type-aliased message types in Axon Framework 5

This release adds a new \AliasableMessageTypeResolver\ for Axon Framework 5, allowing you to replace verbose fully qualified class names with short, business-friendly aliases (e.g., \OrderCreated\) in serialized events and commands. By annotating message classes with \@TypeAlias\ and registering the resolver in your Axon configuration, you can reduce message payload sizes, improve readability, and decouple event type names from package structures to make refactoring safer. The change includes the core resolver implementation, an annotation processor to generate the alias mapping bundle at compile time, and integration tests demonstrating alias resolution and event publishing with aliased types.

type-alias-axon-5-serializer, type-alias-axon-5-serializer-integration-test · high confidence

Behavioural changes

Fail class loading on unknown resource bundle object types

The AliasableResourceBundleClassloader now throws an IllegalArgumentException when it encounters a resource bundle entry with an unexpected value type, instead of silently returning null. This ensures that serialization failures are immediate and explicit when the type alias configuration is invalid, improving error visibility for users relying on the type aliasing feature.

type-alias-axon-serializer/src · high confidence

Removed Eclipse IDE configuration files

Deleted \.settings/\ directories (including \org.eclipse.jdt.core.prefs\, \org.eclipse.m2e.core.prefs\, and related Eclipse preference files) from the \type-alias\, \type-alias-example\, \type-alias-axon-serializer\, and \type-alias-axon-serializer-integration-test\ modules. This removes IDE-specific workspace metadata, allowing the project to rely on standard build tool configurations (Maven) instead of Eclipse-specific settings.

(repo-wide) · high confidence

Support for primary aliases and corrected default package assignment for external types

The TypeAlias annotation processor now allows marking one alias as the 'primary' alias for a type that has multiple aliases via the new \primary\ attribute on \@TypeAlias\. This enables conditional template generation (e.g., including lines only for the primary alias) and enforces that only one primary alias exists per type. Additionally, the processor now correctly assigns external aliases (those with a \type\ attribute) to the package of the annotated element rather than the default package, fixing previous misplacement of generated files for external type definitions.

type-alias/src · high confidence

Updated documentation and cleaned up IDE-specific files

The integration test module's README has been updated to clarify that it runs on a managed WildFly server rather than an embedded one, and to provide the explicit Maven command for building. Additionally, references to the Axon Framework and an Arquillian example have been added to the documentation, while Eclipse-specific project configuration files (.classpath and .project) have been removed to reduce repository clutter.

type-alias-axon-serializer-integration-test · high confidence

Test coverage

Migrated integration tests to JUnit 5 and added tracking event coverage

The integration test suite in the Axon serializer example has been migrated from JUnit 4 to JUnit 5 (Jupiter), updating all test classes to use JUnit 5 annotations and assertions. The migration includes renaming the main integration test class to \AccountEventsourcingIntegrationIT\ and switching the deployment descriptor from a Java Archive to a Web Archive with Maven-resolved dependencies. Additionally, new tests were added to verify tracking event processing, ensuring that event tokens are updated correctly and that subscription queries receive published events. The test infrastructure was also enhanced with a preconfigured aggregate test fixture to handle command target resolution and an internal hex decoder to support blob decoding in the database repository.

type-alias-axon-serializer-integration-test/src/test/java · high confidence

Dependencies

Maven dependency updates and Axon 5 serializer support

This release updates core dependencies including Jackson to 2.22.2, Log4j to 2.26.1, and Axon Framework to 4.13.2, while introducing a new \type-alias-axon-5-serializer\ module and its integration tests to support Axon Framework 5. The project's Maven coordinates have been updated to \io.github.joht.alias\, and the build now targets Java 21 for the main modules while maintaining Java 8 compatibility for the core library.

(dependencies) · high confidence

Housekeeping

Added Axon Framework license notice and cleaned up IDE metadata; Cleaned up build artifacts in Axon serializer integration test module; Updated documentation and cleaned up IDE-specific files.

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 70 → 77 (+7.5)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 99 (-0.5)
  • Architecture 100 → 85 (-15.5)
  • Maturity 71 → 71 (+0.0)
  • Readiness 66 → 88 (+21.2)
  • Security 63 → 77 (+14.8)
  • Domain Modelling 100 → 100 (+0.0)

Resolved (16)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • Duplicated block (11 lines × 2) (type-alias-axon-serializer/src/main/java/org/alias/axon/serializer/aliasable/AliasableTypeResourceBundleValidator.java)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • No exposed public API
  • PR-triggered workflow without a permissions block
  • Scanner failed to run — not a clean result
  • Test reliability not included
  • dormant codebase — no living knowledge left to concentrate
  • knowledge concentrated in recent work — freshness signal contradicted by repo activity

New (71)

  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (10 lines × 4) (type-alias-axon-serializer-integration-test/src/main/java/org/alias/axon/serializer/example/domain/model/account/AccountAggregate.java)
  • Duplicated block (17 lines × 2) (type-alias-axon-serializer-integration-test/src/main/java/org/alias/axon/serializer/example/messages/command/account/ChangeNicknameCommand.java)
  • Duplicated block (26 lines × 2) (type-alias-axon-serializer/src/main/java/org/alias/axon/serializer/aliasable/AliasableTypeResourceBundleValidator.java)
  • Duplicated block (8 lines × 2) (type-alias-axon-serializer/src/main/java/org/alias/axon/serializer/aliasable/AliasableTypeResourceBundleValidator.java)
  • Duplicated block (8 lines × 2) (type-alias-axon-serializer/src/main/java/org/alias/axon/serializer/aliasable/AliasableTypeResourceBundleValidator.java)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • No assertions: aliasShouldBeDefinableForAnotherNotAnnotatedType (type-alias/src/test/java/org/alias/annotation/internal/processor/TypeAliasAnnotationProcessorTest.java)
  • No assertions: aliasShouldBeDefinableForMultipleExternalClassesInsidePackage (type-alias/src/test/java/org/alias/annotation/internal/processor/TypeAliasAnnotationProcessorTest.java)
  • No assertions: aliasShouldBeDefinableForMultipleExternalClassesInsidePackageInfo (type-alias/src/test/java/org/alias/annotation/internal/processor/TypeAliasAnnotationProcessorTest.java)
  • No assertions: aliasShouldBeDefinableForMultipleExternalClassesWithoutPackageConfiguration (type-alias/src/test/java/org/alias/annotation/internal/processor/TypeAliasAnnotationProcessorTest.java)
  • No assertions: allErrorsOfInvalidResourceBundleReported (type-alias-axon-serializer/src/test/java/org/alias/axon/serializer/aliasable/AliasableTypeResourceBundleValidatorTest.java)
  • …and 51 more

Changes since last survey

  • 23 commits — 23 feature/other, 0 fixes

By area

  • (repo) — 9 commits
  • (root) — 5 commits
  • type-alias-axon-serializer-integration-test/pom.xml — 5 commits
  • type-alias-jsonb-typereference/pom.xml — 3 commits
  • type-alias-axon-5-serializer-integration-test/pom.xml — 1 commit

Notable commits

  • change: Merge pull request #539 from JohT/renovate/org.eclipse-yasson-replacement
  • change: Merge pull request #540 from JohT/renovate/org.eclipse-yasson-3.0.x
  • change: Merge pull request #542 from JohT/renovate/patch-jackson-monorepo
  • change: Merge pull request #545 from JohT/renovate/patch-wildfly.version
  • change: Merge pull request #548 from JohT/renovate/patch-equalsverifier.version
  • change: Merge pull request #549 from JohT/renovate/maven.compiler.version
  • change: Merge pull request #550 from JohT/renovate/maven.failsafe.version
  • change: Merge pull request #551 from JohT/renovate/maven.surefire.version
  • change: Merge pull request #553 from JohT/renovate/org.apache.maven.plugins-maven-deploy-plugin-3.x
  • change: Replace dependency org.eclipse:yasson with org.eclipse.yasson:yasson
  • change: Update dependency io.projectreactor:reactor-core to v3.8.7 (#543)
  • change: Update dependency jakarta.json.bind:jakarta.json.bind-api to v3.0.3 (#547)
  • change: Update dependency nl.jqno.equalsverifier:equalsverifier to v4.5.1 (#544)
  • change: Update dependency nl.jqno.equalsverifier:equalsverifier to v4.5.2
  • change: Update dependency org.apache.maven.plugins:maven-compiler-plugin to v3.16.0
  • change: Update dependency org.apache.maven.plugins:maven-deploy-plugin to v3.2.0
  • change: Update dependency org.apache.maven.plugins:maven-failsafe-plugin to v3.6.0
  • change: Update dependency org.apache.maven.plugins:maven-surefire-plugin to v3.6.0
  • change: Update dependency org.eclipse:yasson to v3.0.5
  • change: Update dependency org.junit.jupiter:junit-jupiter to v6.1.3 (#541)
  • …and 3 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

JohT/alias was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 897308ae21a03b8cf6702cb45974fc8f45f2168e — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-fa71c66cabd8.