Full-stack modernization of aws-appconfig-java-sample-maven — Spring Boot 3.x, Jakarta EE, JUnit 5, and modern Java idioms. Powered by AWS Transform agentic AI.
11 sequential steps — each verified with a successful build before proceeding.
Every dependency updated for Java 21 and Spring Boot 3.x compatibility.
| Component | Before | After | |
|---|---|---|---|
| Java Version | 1.8 | → | 21 |
| Spring Boot | 2.0.5.RELEASE | → | 3.2.1 |
| AWS SDK BOM | 2.14.27 | → | 2.20.0 |
| Log4j | 2.13.3 | → | 2.21.0 |
| org.json | 20200518 | → | 20231013 |
| Validation API | javax.validation 2.0.1 | → | jakarta.validation 3.0.2 |
| Maven Compiler | 3.8.1 | → | 3.11.0 |
| JUnit | JUnit 4.13.1 | → | JUnit 5 (Jupiter) |
| Mockito | mockito-all 1.10.19 | → | Mockito 5.x (via Spring Boot) |
| AppConfig SDK | getConfiguration() (deprecated) | → | AppConfigDataClient (session API) |
Modern Java 21 idioms applied across the entire codebase.
All javax.* imports migrated to jakarta.* — required for Spring Boot 3.x and Jakarta EE 10.
ConfigurationKey converted to a Java record with compact constructor and automatic equals/hashCode/toString.
ConfigurationKey.javaTraditional switch/break statements replaced with arrow-syntax switch expressions for cleaner control flow.
MovieAnalyticsServiceMulti-line string concatenation replaced with text blocks and .formatted() for HTML, JSON, and reports.
10+ imperative loops converted to stream operations — filter, map, collect, toList, groupingBy, joining.
MovieAnalyticsService · MovieUtilitiesVerbose instanceof checks replaced with pattern matching: if (!(obj instanceof Movie other))
Manual try-finally blocks replaced with try-with-resources using var for automatic resource management.
Arrays.asList() → List.of(), raw types eliminated, proper generics throughout.
All 4 test files migrated: Jupiter annotations, Assertions API, @ExtendWith, @BeforeEach, openMocks().
All test files26 exit criteria evaluated — 24 full pass, 2 partial (environment limitation).
The agentic AI service that powered this migration.
Out-of-the-box transformation definitions for Java, Python, Node.js version upgrades, SDK migrations, and more. Or create custom transformations via natural language.
Run interactively with human-in-the-loop or autonomously via CLI. Embed into any pipeline. Scale to hundreds of repos in parallel via AWS Batch/Fargate.
User-defined validation: automated build checks, test execution, code reviews. Failed code is sent back to the agent for self-debugging and fixing.
Continual learning from every execution. The agent identifies knowledge items from debugging steps, human input, and code observations to improve future runs.
This migration was executed using AWS Transform Custom — the Java version upgrade transformation definition. The agent analyzed the codebase, planned 11 transformation steps, executed each with build verification, and applied modern Java 21 idioms including records, switch expressions, text blocks, streams, pattern matching, and Optional. The entire transformation completed with zero test failures and full guardrail compliance.