Skip to content
CAI
Software that uses CAICheck a score

banq/jdonframework

39.3

Weak · 22 September 2026

38.4k

lines of production code

Java

with JavaScript

7

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Jdon Framework is a Java-based application framework that provides infrastructure for Domain-Driven Design, CQRS, and DCI patterns. It offers AOP support, caching, and database access abstractions, while also integrating with Spring, Struts, and OSGi. The system includes multiple example applications demonstrating these architectural patterns.

How it got here

2011–2012 — Architectural pattern examples and documentation

7 changes.

This period focused on expanding the project's educational resources by adding comprehensive English and Chinese documentation, alongside multiple example applications demonstrating CQRS, DCI, and Event Sourcing patterns. The team also introduced Gradle build support and established standard project scaffolding to improve developer onboarding and build consistency.

2013–2019 — Domain-driven architecture and pattern examples

10 changes.

The project expanded its domain-driven design and CQRS capabilities by introducing comprehensive annotation-based AOP infrastructure and multiple example applications. These examples, including implementations for DDD, DCI, and event sourcing, demonstrate how to build and integrate these architectural patterns using the updated framework.

Features

Add CQRS and DCI-based robot example

The example/cqrs+dci/robot directory now includes a complete CQRS and DCI implementation for a robot domain. This adds command and query servlets, domain models (Robot, CPU, Motor, Sensor, Sonar), and a service layer (CommandService) that uses DCI role assignment. It also introduces an event-driven architecture with an event bus handler and subscribers to handle domain events, alongside a query handler to retrieve robot data.

example/cqrs+dci/robot · high confidence

Add CQRS+DCI example application

A new example application demonstrating CQRS and DCI patterns has been added. It includes a web.xml configuration defining command and query servlets, an index.jsp page for user interaction, and a readme file with usage instructions and links.

example/cqrs+dci · high confidence

Add DCI-based robot example with servlet, domain, and repository layers

A new example application is introduced in the 'robot' module, demonstrating a Domain-Driven Design (DCI) architecture. The update adds a Java servlet entry point, domain classes (Robot, CPU, Motor, Sensor, Sonar, IntelligentRobot), a service layer (Context, TestContext) that orchestrates the DCI roles, and an in-memory repository implementation. This provides a complete, runnable example of how the framework's DCI features can be used to build a simple robot simulation.

example/dci+de/robot · high confidence

Add DDD cargo example with web interface

A new DDD cargo example is added to the application, providing a complete reference implementation for tracking and managing cargo shipments. The example includes domain models (Cargo, HandlingEvent, CarrierMovement), repositories, and a web interface (MyServlet) that allows users to register and unload cargo via an HTML form. The example also features an SMS notification system that triggers when a cargo arrives at its destination.

example/cargo · high confidence

Add Spring integration example for Jdon Framework

A new Java class, AppContextJdon, is added to the documentation examples to demonstrate how to integrate Jdon Framework with Spring. This class implements Spring's ApplicationContextAware, BeanDefinitionRegistryPostProcessor, and ApplicationListener interfaces to facilitate bidirectional injection of components between the two frameworks. Additionally, a Chinese programmer manual file is added, pointing to the online documentation.

doc/chinese · high confidence

Add jdonMVC+CQRS+ES sample with Gradle and Maven build support

Introduces the jdonMVC+CQRS+ES example application, providing a complete reference implementation for Command-Query Responsibility Segregation (CQRS) and Event Sourcing using the Jdon framework. The addition includes Java domain models (UserModel, UploadFile), repository interfaces and SQL-based DAOs, event publishers, and web command handlers. To facilitate building and running the project, Gradle wrapper scripts (gradlew, gradlew.bat) and a Maven build configuration are included alongside database schema and configuration files for MySQL and JBoss.

example/jdonMVC+CQRS+ES · high confidence

Added CQRS and DCI example applications

Added two new example applications to demonstrate architectural patterns. The CQRS+ES example provides a 'Match' demo with a build script, servlet configuration, and JSP interface for command and query operations. The DCI+DE example provides a 'Robot' demo with a build script, servlet configuration, and JSP interface for a domain-driven design and DCI example.

example/cqrs+es · high confidence

Added CQRS example with command and query servlets

The example/cqrs+es/match location now includes a complete CQRS (Command Query Responsibility Segregation) demonstration. This includes a CommandServlet to handle write operations, a QueryServlet for read operations, domain models (Match, Score, Team), event classes (MatchCreatedEvent, etc.), and infrastructure components like the EventBusHandler and MatchListQuery. This provides a concrete example of how to implement CQRS with event sourcing in the application.

example/cqrs+es/match · high confidence

Added English documentation and integration examples

Added a suite of English-language documentation files to the doc/english directory, including a new AppContextJdon.java example demonstrating Spring integration, and HTML pages covering Domain-Driven Design (DDD), DCI, Immutability, Context Event and State (CES), and Big Data reactive patterns. These files provide users with concrete examples and explanations for using the Jdon Framework with Spring and other architectural patterns.

doc/english · high confidence

Added Gradle build support and project scaffolding files

The project now includes Gradle wrapper scripts (gradlew, gradlew.bat) and a .gitignore file, enabling developers to build the project using Gradle in addition to existing build systems. Additionally, the repository was initialized with essential metadata files including CHANGES.TXT (documenting version history for 6.9, 6.8, 6.6.4, and 6.5.2), a README.md, and license.txt, establishing the project's documentation and legal headers.

(repo-wide) · high confidence

Added IDE module configuration files for Jdon modules

New IntelliJ IDEA module definition files (jdon-hibernate3x.iml and jdon-jdbc.iml) have been added to the JdonAccessory directory. These files define the project structure, source folders, and Maven dependencies for the jdon-hibernate3x and jdon-jdbc modules, ensuring correct IDE recognition and dependency resolution for these specific components.

JdonAccessory · high confidence

Added Struts 1.x integration and example applications for CQRS, ES, and DCI patterns

Introduced new support for Struts 1.x by adding the \ModelHandlerManagerImp\ and related factory classes to handle model and handler instantiation within that framework. Additionally, added example implementations for Domain-Driven Design (Cargo), Command Query Responsibility Segregation (Robot, Match), and Event Sourcing (Match, UploadFile, User) to demonstrate the framework's capabilities in these architectural patterns.

jdonframework · high confidence

Added documentation for REST and OSGi integration

Added a new file, doc/todo.txt, which documents the integration of IOC, OSGi, and REST. The file outlines how to register resources via OSGi service references and provides code examples for the Activator class and XML/Annotation-based registration, as well as client usage patterns.

doc · high confidence

Introduce block-based pagination and caching for database queries

Added a new block-based pagination mechanism to the Jdon framework's Hibernate 3.x module. This includes a \PageIterator\ for managing paginated model collections, a \PageIteratorSolver\ to coordinate query execution, and a \BlockStrategy\ that fetches and caches primary key blocks to optimize database access. The change also introduces a \JdbcTemp\ template for direct JDBC operations, a \DaoCRUD\ interface and \DaoCRUDTemplate\ base class for standard persistence operations, and cache key factories for block and model caching.

(repo-wide) · high confidence

New annotations and AOP infrastructure for domain-driven design

The framework introduces a comprehensive set of Java annotations to support Domain-Driven Design and Aspect-Oriented Programming. New annotations include @Component, @Service, @Model, @Singleton, @Consumer, @Introduce, and @Interceptor for component and service registration, as well as @Send, @OnEvent, @OnCommand, and @Inject for domain model interactions. Additionally, pointcut annotations (@Before, @After, @Around) and interceptor annotations (@Poolable, @Stateful, @SessionContextAcceptable) are added to enable declarative advice and object pooling. The underlying AOP engine is also updated with new classes like AopClient, AdvisorChainFactory, and various interceptors (Cache, ComponentMessage, Pool) to support these features.

src/main · high confidence

Test coverage

Added tests for CQRS, bank account transfers, and component interception

Added new test files in src/test to cover various framework capabilities. This includes tests for CQRS and domain events in SampleAppTest, a bank account transfer scenario with process managers, a Disruptor-based async event handling test, and component interception via AOP in the component package. Additionally, unit tests were added for the container director and XML configuration loading.

src/test · high confidence

Dependencies

JdonFramework 6.9 release with updated dependencies

The JdonFramework library has been updated to version 6.9, accompanied by significant dependency upgrades including Javassist 3.23.1-GA, Guava 23.0, Disruptor 3.3.8, and Log4j 2.11.0. The project also added Maven and Gradle build configurations for the core framework and various accessory modules (Hibernate, JDBC, Remote, Struts), enabling users to integrate Jdon 6.9 into their projects using either build tool.

(dependencies) · medium confidence

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

Score

  • CAI 50 → 39 (-10.7)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 87 → 90 (+3.4)
  • Architecture 100 → 94 (-6.2)
  • Maturity 60 → 60 (+0.0)
  • Readiness 36 → 36 (+0.0)
  • Security 46 → 65 (+19.0)
  • Domain Modelling 100 → 90 (-10.1)
  • Accessibility 22 (new)

Resolved (72)

  • Base64.decode (cognitive 21) (src/main/java/com/jdon/util/Base64.java)
  • Base64.decode (cognitive 21) (src/main/java/com/jdon/util/Base64.java)
  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • Duplicated block (10 lines × 2) (JdonAccessory/jdon-hibernate3x/src/main/java/com/jdon/persistence/hibernate/HibernateTemplate.java)
  • Duplicated block (10 lines × 2) (JdonAccessory/jdon-hibernate3x/src/main/java/com/jdon/persistence/hibernate/HibernateTemplate.java)
  • Duplicated block (10 lines × 2) (JdonAccessory/jdon-hibernate3x/src/main/java/com/jdon/persistence/hibernate/HibernateTemplate.java)
  • Duplicated block (10 lines × 2) (JdonAccessory/jdon-struts1x/src/main/java/com/jdon/security/web/CookieUtil.java)
  • Duplicated block (10 lines × 2) (JdonAccessory/jdon-struts1x/src/main/java/com/jdon/security/web/HttpRequestUserSetup.java)
  • Duplicated block (10 lines × 2) (JdonAccessory/jdon-struts1x/src/main/java/com/jdon/strutsutil/util/EditeViewPageUtil.java)
  • Duplicated block (10 lines × 2) (example/cargo/src/ship/repository/HandlingEventRepositoryInMem.java)
  • Duplicated block (10 lines × 2) (src/main/java/com/jdon/util/ClassUtil.java)
  • Duplicated block (10 lines × 3) (src/main/java/com/jdon/bussinessproxy/dyncproxy/cglib/CGLIBDynamicProxyWeaving.java)
  • Duplicated block (11 lines × 2) (src/main/java/com/jdon/aop/AopClient.java)
  • Duplicated block (11 lines × 2) (src/main/java/com/jdon/async/EventMessageFirer.java)
  • Duplicated block (11 lines × 2) (src/main/java/com/jdon/async/disruptor/ValueEventProcessor.java)
  • Duplicated block (11 lines × 2) (src/main/java/com/jdon/domain/message/DomainCommandDispatchHandler.java)
  • Duplicated block (11 lines × 2) (src/main/java/com/jdon/util/DbUtil.java)
  • Duplicated block (12 lines × 2) (JdonAccessory/jdon-struts1x/src/main/java/com/jdon/strutsutil/util/EditeViewPageUtil.java)
  • Duplicated block (12 lines × 2) (JdonAccessory/jdon-struts1x/src/main/java/com/jdon/strutsutil/util/EditeViewPageUtil.java)
  • …and 52 more

New (141)

  • Base64.decode (cognitive 21) (src/main/java/com/jdon/util/Base64.java)
  • Base64.decode (cognitive 21) (src/main/java/com/jdon/util/Base64.java)
  • BlockQueryJDBCTemp.fetchDatas (cognitive 17) (JdonAccessory/jdon-jdbc/src/main/java/com/jdon/model/query/block/BlockQueryJDBCTemp.java)
  • BlockStrategy.locate (cognitive 21) (JdonAccessory/jdon-jdbc/src/main/java/com/jdon/model/query/block/BlockStrategy.java)
  • ClassTooLong: Base64 (src/main/java/com/jdon/util/Base64.java)
  • ClassTooLong: UtilValidate (src/main/java/com/jdon/util/UtilValidate.java)
  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Duplicated block (10 lines × 2) (JdonAccessory/jdon-hibernate3x/src/main/java/com/jdon/model/query/PageIteratorSolver.java)
  • Duplicated block (10 lines × 2) (JdonAccessory/jdon-hibernate3x/src/main/java/com/jdon/persistence/hibernate/HibernateTemplate.java)
  • Duplicated block (10 lines × 2) (JdonAccessory/jdon-hibernate3x/src/main/java/com/jdon/persistence/hibernate/HibernateTemplate.java)
  • Duplicated block (10 lines × 2) (JdonAccessory/jdon-struts1x/src/main/java/com/jdon/model/ModelHandlerManagerImp.java)
  • Duplicated block (10 lines × 2) (JdonAccessory/jdon-struts1x/src/main/java/com/jdon/strutsutil/taglib/NextTag.java)
  • Duplicated block (10 lines × 2) (src/main/java/com/jdon/container/annotation/type/Utils.java)
  • Duplicated block (10 lines × 2) (src/main/java/com/jdon/container/interceptor/BeforeAfterMethodTarget.java)
  • Duplicated block (10 lines × 2) (src/main/java/com/jdon/util/ClassUtil.java)
  • Duplicated block (10–11 lines × 3) (JdonAccessory/jdon-struts1x/src/main/java/com/jdon/controller/config/XmlPojoServiceParser.java)
  • Duplicated block (11 lines × 2) (JdonAccessory/jdon-hibernate3x/src/main/java/com/jdon/model/query/cache/BlockCacheManager.java)
  • Duplicated block (11 lines × 2) (JdonAccessory/jdon-hibernate3x/src/main/java/com/jdon/model/query/cache/QueryConditonDatakey.java)
  • Duplicated block (11 lines × 2) (JdonAccessory/jdon-struts1x/src/main/java/com/jdon/model/handler/HandlerMethodMetaArgsFactory.java)
  • Duplicated block (11 lines × 2) (JdonAccessory/jdon-struts1x/src/main/java/com/jdon/security/web/CookieUtil.java)
  • …and 121 more

Architecture

  • Containers 0 added · 0 removed · contexts 5 added · 0 removed · edges 9 added · 0 removed

Added bounded contexts (5)

  • dciderobot
  • jdon-struts1x
  • jdonmvc_cqrs_es
  • match
  • robot

Added dependency edges (9)

  • dciderobot → jdonframework
  • dciderobot → robot
  • jdon-struts1x → jdonframework
  • jdonframework → jdon-struts1x
  • jdonmvc_cqrs_es → jdonframework
  • match → jdonframework
  • robot → dciderobot
  • robot → jdonframework
  • robot → match

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

Survey your own repository

banq/jdonframework 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 22 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 9a9fa5921bab875579f397c32c7438e507735d9d — 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-90d5d2fe38ee.