-
Notifications
You must be signed in to change notification settings - Fork 2
Epic #16: Complete Spring Boot Workshop Adaptation for Enterprise Java Clients #36
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
shawnewallace
wants to merge
48
commits into
main
Choose a base branch
from
feature/epic-16-spring-boot-adaptation
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
48 commits
Select commit
Hold shift + click to select a range
4a4db39
feat(devcontainer): create 3 devcontainer configs for bilingual workshop
shawnewallace d89650d
fix(devcontainer): add markdown, mermaid, and marp extensions to partβ¦
shawnewallace 8209abb
refactor(devcontainer): remove root devcontainer.json
shawnewallace 4ba8cc3
feat(instructions): create bilingual instruction files with applyTo pβ¦
shawnewallace 05110aa
refactor(instructions): remove redundant root-level copilot instructions
shawnewallace b897dcd
docs: update README files to reference new scoped instruction files
shawnewallace fbbbf18
docs: update all documentation to reference new scoped instruction files
shawnewallace 6ca289b
feat(springboot): create multi-module Maven project structure
shawnewallace eb18ef3
feat(springboot): create domain entities Task, TaskId, and TaskStatus
shawnewallace 139936c
feat(domain): add TaskRepository port interface
shawnewallace 6771e69
test(domain): add comprehensive unit tests for Task aggregate
shawnewallace 279cb09
feat(application): add TaskService for use case orchestration
shawnewallace 3b7257f
test(application): add comprehensive unit tests for TaskService
shawnewallace e0e5c4d
fix(test): remove unused BeforeEach import from TaskServiceTest
shawnewallace 34d7cf2
feat(infrastructure): add JPA entities and mappers
shawnewallace 024a698
feat(infrastructure): add JPA repository implementation
shawnewallace 3fc999e
test(infrastructure): add integration and unit tests for repository lβ¦
shawnewallace 867a0b9
fix: remove unused variable 'updated' in integration test
shawnewallace 1f66f0a
feat(api): add DTOs for task API endpoints
shawnewallace 2080f11
feat(api): add TaskController REST endpoints
shawnewallace 42ac259
feat(api): add GlobalExceptionHandler for centralized error handling
shawnewallace e89b4f5
feat(api): add API integration tests and Spring Boot application
shawnewallace 67feee1
feat(api): add OpenAPI/Springdoc documentation
shawnewallace 762c8c7
feat(config): add Spring Boot application configuration files
shawnewallace 98cb31e
feat(coverage): add JaCoCo coverage reporting to all modules
shawnewallace 9a97406
feat(devcontainer): add Spring Boot build to maintainer postCreateComβ¦
shawnewallace 0a9c342
docs: add devcontainer test plan for Epic #16 validation
shawnewallace 4619c57
docs: add quick resume guide for Epic #16 work
shawnewallace 6f0f631
feat(dev): configure H2 in-memory database for development profile
shawnewallace 76c3ad7
docs(patterns): create comprehensive .NET to Spring Boot pattern tranβ¦
shawnewallace 82875bc
feat: Add Spring Boot examples to Lab 1 TDD
shawnewallace 274b7bc
feat: Add Java/Spring Boot version of Lab 2
shawnewallace 85fefc1
feat: Add Java/Spring Boot version of Lab 3
shawnewallace 9f2c7e4
feat(lab10): Add bilingual .NET and Spring Boot examples
shawnewallace 70c92bc
feat(docs): Update facilitator guides for bilingual delivery (.NET & β¦
shawnewallace 0892b30
feat(readme): Update README for bilingual workshop support (.NET & Spβ¦
shawnewallace eb9b5bf
chore: Remove RESUME.md file
shawnewallace 6f995a3
feat(epic-16): enhance architecture-reviewer agent for dual-stack supβ¦
shawnewallace b20c2e2
docs(epic-16): update custom-agent-catalog for dual-stack architecturβ¦
shawnewallace 1b3d738
feat(epic-16): create quality-gate agent for dual-stack quality validβ¦
shawnewallace dcbd05c
docs(epic-16): add quality-gate agent to custom-agent-catalog
shawnewallace e94c73c
feat(epic-16): create test-coverage agent for dual-stack coverage anaβ¦
shawnewallace d4b5d2e
docs(epic-16): add test-coverage agent to custom-agent-catalog
shawnewallace c5ac60f
feat(epic-16): create modernization agent for Mule ESB β Spring Boot β¦
shawnewallace f0f6cf6
fix(epic-16): add write capability to modernization agent
shawnewallace f942ff2
feat(epic-16): add Mermaid diagrams to modernization agent output
shawnewallace 94eabb7
docs: complete enterprise Java workshop context guide
shawnewallace b449d65
docs: create modernization pattern library for Mule ESB β Spring Boot
shawnewallace File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,189 @@ | ||
| # DevContainer Selection Guide | ||
|
|
||
| This repository contains **3 devcontainer configurations** to support different workshop roles and technology stacks. | ||
|
|
||
| ## π― Which Container Should I Use? | ||
|
|
||
| When you open this repository in VS Code, you'll be prompted to select a devcontainer configuration. Choose based on your role: | ||
|
|
||
| --- | ||
|
|
||
| ### 1οΈβ£ **Workshop Maintainer** (Full Toolchain) | ||
|
|
||
| **Location:** `.devcontainer/maintainer/` | ||
|
|
||
| **Who should use this:** | ||
| - Workshop authors and content creators | ||
| - Facilitators preparing for dual-stack delivery | ||
| - Contributors working on both .NET and Spring Boot examples | ||
| - Anyone needing to build/test both implementations | ||
|
|
||
| **What's included:** | ||
| - β .NET 9 SDK | ||
| - β Java 21 JDK (LTS) | ||
| - β Maven 3.9+ and Gradle 8+ | ||
| - β Node.js 20 + Marp CLI (for presentations) | ||
| - β All VS Code extensions (C#, Java, Spring Boot, Markdown, Marp) | ||
| - β GitHub CLI | ||
|
|
||
| **Builds:** | ||
| - Both `TaskManager.sln` (.NET) and `src-springboot/` (Java) | ||
| - All presentations and documentation | ||
| - Full workshop materials | ||
|
|
||
| --- | ||
|
|
||
| ### 2οΈβ£ **.NET Participant** (Streamlined) | ||
|
|
||
| **Location:** `.devcontainer/dotnet-participant/` | ||
|
|
||
| **Who should use this:** | ||
| - Workshop participants following the .NET track | ||
| - Self-paced learners using C# examples | ||
| - Developers working in .NET 9 environment | ||
|
|
||
| **What's included:** | ||
| - β .NET 9 SDK | ||
| - β C# Dev Kit extension | ||
| - β GitHub Copilot extensions | ||
| - β Minimal overhead for fast startup | ||
|
|
||
| **Auto-activates:** | ||
| - `.github/instructions/dotnet.instructions.md` (automatically loads when editing C# files) | ||
|
|
||
| **Builds:** | ||
| - `TaskManager.sln` (.NET solution only) | ||
|
|
||
| --- | ||
|
|
||
| ### 3οΈβ£ **Spring Boot Participant** (Streamlined) | ||
|
|
||
| **Location:** `.devcontainer/springboot-participant/` | ||
|
|
||
| **Who should use this:** | ||
| - Workshop participants following the Spring Boot track | ||
| - Enterprise Java teams modernizing from Mule ESB | ||
| - Self-paced learners using Java examples | ||
| - Developers working in Spring Boot 3.x environment | ||
|
|
||
| **What's included:** | ||
| - β Java 21 JDK (LTS) | ||
| - β Maven 3.9+ and Gradle 8+ | ||
| - β Extension Pack for Java | ||
| - β Spring Boot Extension Pack | ||
| - β GitHub Copilot extensions | ||
| - β Minimal overhead for fast startup | ||
|
|
||
| **Auto-activates:** | ||
| - `.github/instructions/springboot.instructions.md` (automatically loads when editing files in src-springboot/) | ||
|
|
||
| **Builds:** | ||
| - `src-springboot/` (Spring Boot solution only) | ||
|
|
||
| --- | ||
|
|
||
| ## π How to Select | ||
|
|
||
| ### First Time Opening the Repository | ||
|
|
||
| 1. Open the repository in VS Code | ||
| 2. VS Code will detect multiple devcontainer configurations | ||
| 3. You'll see a prompt: **"Select a Dev Container configuration to use"** | ||
| 4. Choose based on the guidance above | ||
|
|
||
| ### Switching Between Containers | ||
|
|
||
| 1. Press `F1` or `Ctrl+Shift+P` (Windows/Linux) / `Cmd+Shift+P` (Mac) | ||
| 2. Type: **"Dev Containers: Rebuild and Reopen in Container"** | ||
| 3. Select the new container configuration | ||
| 4. Wait for container rebuild (1-5 minutes depending on container) | ||
|
|
||
| --- | ||
|
|
||
| ## π Container Comparison | ||
|
|
||
| | Feature | Maintainer | .NET Participant | Spring Boot Participant | | ||
| |---------|-----------|------------------|------------------------| | ||
| | **.NET 9 SDK** | β | β | β | | ||
| | **Java 21 JDK** | β | β | β | | ||
| | **Maven/Gradle** | β | β | β | | ||
| | **Marp CLI** | β | β | β | | ||
| | **All Extensions** | β | .NET only | Java only | | ||
| | **Build Time** | ~3-5 min | ~1-2 min | ~2-3 min | | ||
| | **Container Size** | ~5 GB | ~2 GB | ~3 GB | | ||
| | **Copilot Instructions** | Both | .NET | Spring Boot | | ||
|
|
||
| --- | ||
|
|
||
| ## π οΈ Troubleshooting | ||
|
|
||
| ### "Which Container Should I Use?" Decision Tree | ||
|
|
||
| ``` | ||
| Are you creating workshop content or facilitating? | ||
| ββ YES β Use Maintainer | ||
| ββ NO β Are you following .NET or Spring Boot track? | ||
| ββ .NET β Use .NET Participant | ||
| ββ Spring Boot β Use Spring Boot Participant | ||
| ``` | ||
|
|
||
| ### Container Won't Build | ||
|
|
||
| **Error:** "Failed to build devcontainer" | ||
|
|
||
| **Solutions:** | ||
| 1. Ensure Docker Desktop is running | ||
| 2. Check available disk space (need 5+ GB free) | ||
| 3. Try rebuilding: `F1` β "Dev Containers: Rebuild Container" | ||
| 4. Clear Docker cache: `docker system prune -a` | ||
|
|
||
| ### Copilot Instructions Not Loading | ||
|
|
||
| **Instructions now auto-load based on file context:** | ||
| - `.github/instructions/dotnet.instructions.md` loads for `**/*.cs` files | ||
| - `.github/instructions/springboot.instructions.md` loads for `src-springboot/**` files | ||
| - No manual configuration needed - instructions activate automatically when you open files | ||
|
|
||
| **If instructions aren't applying:** | ||
| - Verify `.github/instructions/` directory exists | ||
| - Check file has correct `applyTo:` frontmatter | ||
| - Reload VS Code window: `F1` β "Developer: Reload Window" | ||
|
|
||
| ### Wrong Container Selected | ||
|
|
||
| **To switch containers:** | ||
| 1. `F1` β "Dev Containers: Rebuild and Reopen in Container" | ||
| 2. Select correct configuration | ||
| 3. Wait for rebuild | ||
|
|
||
| --- | ||
|
|
||
| ## π Next Steps | ||
|
|
||
| ### For .NET Participants | ||
| 1. Verify build: `dotnet build TaskManager.sln` | ||
| 2. Run tests: `dotnet test` | ||
| 3. Start with [Lab 1 (.NET)](../docs/labs/lab-01-tdd-with-copilot/dotnet.md) | ||
|
|
||
| ### For Spring Boot Participants | ||
| 1. Verify build: `mvn clean install -f src-springboot/pom.xml` | ||
| 2. Run tests: `mvn test -f src-springboot/pom.xml` | ||
| 3. Start with [Lab 1 (Spring Boot)](../docs/labs/lab-01-tdd-with-copilot/springboot.md) | ||
|
|
||
| ### For Maintainers | ||
| 1. Verify both builds work | ||
| 2. Test presentations: `marp --version` | ||
| 3. Review [Facilitator Guide](../docs/FACILITATOR_GUIDE.md) | ||
|
|
||
| --- | ||
|
|
||
| ## π Related Documentation | ||
|
|
||
| - [Workshop README](../README.md) - Main workshop overview | ||
| - [Pre-Workshop Checklist](../docs/PRE_WORKSHOP_CHECKLIST.md) - Setup requirements | ||
| - [Pattern Translation Guide](../docs/guides/pattern-translation.md) - .NET β Java mappings | ||
| - [Facilitator Guide](../docs/FACILITATOR_GUIDE.md) - Delivery instructions | ||
shawnewallace marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| --- | ||
|
|
||
| **Questions or issues?** Open an issue in the workshop repository. | ||
This file was deleted.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,42 @@ | ||
| // .NET Participant DevContainer - Streamlined for Workshop Participants | ||
| // For participants following the .NET track | ||
| { | ||
| "name": "AI Workshop - .NET Participant", | ||
| "image": "mcr.microsoft.com/devcontainers/dotnet:9.0-bookworm", | ||
|
|
||
| "features": { | ||
| "ghcr.io/devcontainers/features/github-cli:1": { | ||
| "version": "latest" | ||
| } | ||
| }, | ||
|
|
||
| // Use 'postCreateCommand' to run commands after the container is created | ||
| "postCreateCommand": "dotnet build TaskManager.sln && dotnet dev-certs https --trust", | ||
|
|
||
| // Configure tool-specific properties | ||
| "customizations": { | ||
| "vscode": { | ||
| "extensions": [ | ||
| "GitHub.copilot", | ||
| "GitHub.copilot-chat", | ||
| "humao.rest-client", | ||
| "ms-dotnettools.csdevkit", | ||
| "bierner.markdown-mermaid", | ||
| "marp-team.marp-vscode", | ||
| "yzhang.markdown-all-in-one" | ||
| ], | ||
| "settings": { | ||
| "github.copilot.advanced": {} | ||
| } | ||
| } | ||
| }, | ||
|
|
||
| // Forward ports for .NET apps | ||
| "forwardPorts": [5000, 5001], | ||
| "portsAttributes": { | ||
| "5001": { | ||
| "protocol": "https", | ||
| "label": ".NET HTTPS" | ||
| } | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,94 @@ | ||
| // Workshop Maintainer DevContainer - Full Toolchain | ||
| // For workshop authors and maintainers working with BOTH .NET and Spring Boot | ||
| { | ||
| "name": "AI Workshop - Maintainer (Full Toolchain)", | ||
| "image": "mcr.microsoft.com/devcontainers/base:ubuntu-24.04", | ||
|
|
||
| "features": { | ||
| "ghcr.io/devcontainers/features/dotnet:1": { | ||
| "version": "9.0", | ||
| "installUsingApt": false | ||
| }, | ||
| "ghcr.io/devcontainers/features/java:1": { | ||
| "version": "21", | ||
| "jdkDistro": "ms", | ||
| "installMaven": "true", | ||
| "installGradle": "true", | ||
| "mavenVersion": "3.9", | ||
| "gradleVersion": "8.5" | ||
| }, | ||
| "ghcr.io/devcontainers/features/node:1": { | ||
| "version": "20", | ||
| "nodeGypDependencies": true | ||
| }, | ||
| "ghcr.io/devcontainers/features/github-cli:1": { | ||
| "version": "latest" | ||
| }, | ||
| "ghcr.io/devcontainers/features/git:1": { | ||
| "version": "latest" | ||
| } | ||
| }, | ||
|
|
||
| // Use 'postCreateCommand' to run commands after the container is created | ||
| "postCreateCommand": "dotnet build TaskManager.sln && mvn clean install -f src-springboot/pom.xml -DskipTests && dotnet dev-certs https --trust && npm install -g @marp-team/marp-cli", | ||
|
|
||
| // Configure tool-specific properties | ||
| "customizations": { | ||
| "vscode": { | ||
| "extensions": [ | ||
| // GitHub Copilot | ||
| "GitHub.copilot", | ||
| "GitHub.copilot-chat", | ||
|
|
||
| // .NET Development | ||
| "ms-dotnettools.csdevkit", | ||
| "ms-dotnettools.csharp", | ||
|
|
||
| // Java Development | ||
| "vscjava.vscode-java-pack", | ||
| "vscjava.vscode-spring-boot-dashboard", | ||
| "vmware.vscode-spring-boot", | ||
| "vscjava.vscode-spring-initializr", | ||
| "vscjava.vscode-maven", | ||
| "vscjava.vscode-gradle", | ||
|
|
||
| // API Testing | ||
| "humao.rest-client", | ||
|
|
||
| // Documentation & Presentations | ||
| "bierner.markdown-mermaid", | ||
| "marp-team.marp-vscode", | ||
| "yzhang.markdown-all-in-one" | ||
| ], | ||
| "settings": { | ||
| "github.copilot.advanced": {}, | ||
| "java.configuration.runtimes": [ | ||
| { | ||
| "name": "JavaSE-21", | ||
| "default": true | ||
| } | ||
| ], | ||
| "java.jdt.ls.java.home": "/usr/local/sdkman/candidates/java/current" | ||
| } | ||
| } | ||
| }, | ||
|
|
||
| // Forward ports for both .NET and Spring Boot apps | ||
| "forwardPorts": [5000, 5001, 8080, 8443], | ||
| "portsAttributes": { | ||
| "5001": { | ||
| "protocol": "https", | ||
| "label": ".NET HTTPS" | ||
| }, | ||
| "5000": { | ||
| "label": ".NET HTTP" | ||
| }, | ||
| "8080": { | ||
| "label": "Spring Boot HTTP" | ||
| }, | ||
| "8443": { | ||
| "protocol": "https", | ||
| "label": "Spring Boot HTTPS" | ||
| } | ||
| } | ||
| } |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.