apache/causeway-app-simpleapp
52.6
Adequate · 21 September 2026
797
lines of production code
Java
primary language
4
measurements over time
What this system is
This system is a Java-based application built on the Apache Causeway framework, serving as a modernized version of the Apache Isis platform. It implements a simple domain model using JPA and Spring Boot, featuring a web interface with REST and GraphQL endpoints. The codebase includes comprehensive test coverage and supports background processing and scheduled jobs.
How it got here
2019 — Migration to JPA and Apache Causeway
10 changes.
This period was dominated by the migration of the codebase from Apache Isis to Apache Causeway, including a comprehensive shift from JDO to JPA for data persistence. The work involved renaming the project, updating dependencies, and refactoring domain models and web applications to align with the new framework and Jakarta namespace.
2020–2022 — Domain model and test infrastructure modernization
5 changes.
This period focused on refining the domain model by introducing new type annotations and restructuring the SimpleObject layout for better organization. Concurrently, the project upgraded its testing infrastructure by migrating to JUnit 5 and updating integration tests to align with modern Java and Spring Boot standards.
Features
New domain type annotations for Name and Notes
New Java annotations, Name and Notes, have been added to the domain model. These annotations, part of the Apache Causeway framework, define constraints and UI hints for string-based fields. The Name type enforces a maximum length of 40 characters, while the Notes type allows up to 4000 characters and is configured to be hidden in all tables. These changes provide a more structured way to define and display these common string types within the application.
module-simple/src/main/java/domainapp/modules/simple/types · medium confidence
Redesigned home page and application structure for the webapp
The webapp module has been restructured with a new AppManifest that registers various framework extensions (including JPA, Flyway, and GraphQL) and imports application-specific modules. A new HomePageViewModel is introduced to display a list of SimpleObjects on the home page, supported by a corresponding layout XML. Additionally, a custom REST controller is added to expose simple objects at /custom/simpleObjects, and the application now includes support for Quartz scheduling and H2 console access. The old menubars.layout.xml has been replaced with a more comprehensive menu configuration, and legacy translation files have been removed.
webapp · high confidence
Removals
Removal of application module and associated test infrastructure
The application module has been removed, along with its associated test infrastructure. This includes the deletion of the \ApplicationModule\ configuration class, the \DomainAppFixtureScriptsSpecificationProvider\, the \DomainAppDemo\ fixture script, and the \HomePageService\ and \HomePageViewModel\ for the home page. Additionally, all related integration tests, BDD specifications, and their corresponding approval files have been deleted, effectively removing the application's core service and test coverage from this module.
application · high confidence
Behavioural changes
1 commit (0 fixes) modifying module-simple/src/main/resources/domainapp/modules/simple
A change to existing behaviour in module-simple/src/main/resources/domainapp/modules/simple — 1 commit, 10 files.
module-simple/src/main/resources/domainapp/modules/simple · medium confidence · unverified
Enhanced persona fixtures with PDF attachment support
The SimpleObject persona fixture was refactored to support attaching PDF files to created objects. The enum now carries a content filename, and the builder script reads the corresponding PDF from the classpath to attach to the SimpleObject. Additionally, the fixture now sets a 'last checked in' date using a fake data service and clock service, and imports were updated from javax to jakarta.
module-simple/src/main/java/domainapp/modules/simple/fixture · medium confidence
Migrate domain model and webapp to JPA and Apache Causeway
The SimpleObject domain model and SimpleObjects service are now implemented using JPA (Jakarta Persistence) with the Apache Causeway framework, replacing previous JDO-based implementations. This includes the addition of a Quartz-based scheduled job (SampleJob) for background processing, a Spring-managed health check service (HealthCheckServiceImpl) that validates the JPA integration, and a seed service (SeedSecurityService) that runs fixture scripts during prototyping. The changes also update imports from javax to jakarta and integrate with the new Causeway entity listener and JPA support services.
simpleapp-jpa-webapp · medium confidence
Migrate from Apache Isis to Apache Causeway
The project has been renamed from Apache Isis to Apache Causeway, reflected in updated documentation, configuration files, and build scripts. Users will now encounter the 'Causeway' branding and terminology throughout the application and its supporting files, including the removal of legacy 'Isis' references and the adoption of new build and run scripts.
(repo-wide) · high confidence
Migrates SimpleModule to JPA and updates to Apache Causeway
The SimpleModule has been migrated from JDO to JPA, introducing JPA-specific annotations such as @EnableJpaRepositories and @EntityScan, and updating the fixture teardown to use JPA-aware classes. The module also imports several Apache Causeway extension modules (PDF.js, FullCalendar, Fake Data, and JPA persistence) and renames the implemented interface from Module to ModuleWithFixtures, reflecting the broader framework rename from Isis to Causeway.
module-simple/src/main/java/domainapp/modules/simple · medium confidence
Removal of legacy SimpleObject and SimpleObjects domain classes
The legacy domain classes SimpleObject and SimpleObjects have been removed from the module-simple module. This eliminates the previous implementation of the simple object model and its associated repository service, likely as part of a broader refactoring or migration of the application's data model.
module-simple/src/main/java/domainapp/modules/simple/dom/impl · high confidence
Removal of legacy persistence and logging configuration files
The \logging-dn-enhance.properties\ file, which configured Log4j for DataNucleus, has been removed. Additionally, the \persistence.xml\ file, which defined the JPA persistence unit named 'simple', has been deleted. These changes reflect a shift away from the previous persistence and logging setup.
module-simple · high confidence
Simplified and restructured the SimpleObject layout
The layout for SimpleObject has been simplified and reorganized. The previous layout, which included a 'General' tab with name and notes fields, has been replaced with a new structure featuring 'Identity', 'Other', and 'Metadata' tabs, along with a separate 'Details' fieldset. This change streamlines the user interface by removing redundant or unused sections and consolidating the layout into a more logical grouping of properties.
module-simple/src/main/java/domainapp/modules/simple/dom/so · high confidence
Test coverage
Adds integration tests for the webapp module; Migrate simple module tests to JUnit 5 and update test infrastructure; Removal of legacy unit and integration test classes.
Dependencies
Migrate SimpleApp to JPA and update to version 3.6.0
The SimpleApp starter project has been migrated from the JDO object store to the JPA object store, with the parent POM and all module POMs updated to version 3.6.0. This includes renaming the project artifacts to include a '-jpa' suffix (e.g., 'simpleapp-jpa'), switching dependencies from 'isis' to 'causeway' artifacts, and adding new test modules for the webapp and simple modules. The webapp module now includes support for the GraphQL viewer and additional extensions like Flyway, layout loaders, and security encryption.
(dependencies) · high 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 53 → 53 (-0.0)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 100 (-0.3)
- Architecture 100 → 100 (+0.0)
- Maturity 54 → 54 (+0.0)
- Readiness 26 → 26 (+0.0)
- Security 99 → 99 (+0.0)
Resolved (5)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- No exposed public API
- Scanner failed to run — not a clean result
- Test reliability not included
New (7)
- Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
- Documentation: no licence statement (README.adoc)
- Duplicated block (47 lines × 2) (webapp/src/main/java/domainapp/webapp/custom/restapi/CustomController.java)
- No ADRs found
- Scanner failed to run — not a clean result
- Scanner failed to run — not a clean result
- bus factor 1 — one contributor carries this repository
Architecture
- Containers 0 added · 0 removed · contexts 1 added · 0 removed · edges 1 added · 0 removed
Added bounded contexts (1)
- simpleapp-jpa-module-simple
Added dependency edges (1)
- simpleapp-jpa-webapp → simpleapp-jpa-module-simple
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
apache/causeway-app-simpleapp 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 edf1e585f54a62f0073edae5d1a04d3948117fc5 — 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.