Skip to content

Legacy Java app modernization demo using Spring Boot 1.5.9 and Java 8, optimized for upgrading to modern Java/Spring versions. Based on uPortal messaging service. DevContainer-ready reference implementation for Java upgrade patterns.

License

Notifications You must be signed in to change notification settings

jonathan-vella/github-copilot-appmod-java-uportal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

uPortal Messaging - Java Upgrade Modernization Project

Build Status Coverage Status Java Spring Boot Azure Microsoft GitHub Copilot Anthropic Claude DevContainer Maven

A Spring Boot microservice for determining messages (notifications and announcements) for a user, optimized as a demonstration project for Java application modernization and upgrade scenarios.

📋 Overview

This project is based on uPortal, an open-source enterprise portal framework. The messaging service provides a REST API for managing user-targeted notifications and announcements with audience filtering, time-based delivery, and action buttons.

Primary Purpose: This repository serves as a reference implementation for modernizing legacy Java applications, demonstrating upgrade patterns, dependency management, and containerized development workflows.

🚀 Quick Start with DevContainers

This project is optimized for DevContainers, providing a consistent, reproducible development environment with all required tools pre-configured.

Prerequisites

Getting Started

  1. Clone this repository
  2. Open in VS Code
  3. When prompted, click "Reopen in Container" (or use Command Palette: Dev Containers: Reopen in Container)
  4. The devcontainer will automatically set up Java, Maven, and all dependencies
  5. Build the project: mvn clean install
  6. Run the application: mvn spring-boot:run

🔧 Technology Stack

  • Java: 1.8 (legacy version - upgrade target)
  • Spring Boot: 1.5.9.RELEASE (legacy version)
  • Build Tool: Maven
  • Packaging: WAR
  • Framework: Spring MVC, Spring Data REST

🎯 Java Upgrade Focus

This project demonstrates common challenges and solutions for upgrading legacy Java applications:

  • Upgrading from Java 8 to modern LTS versions (Java 11, 17, 21)
  • Migrating Spring Boot 1.x to Spring Boot 3.x
  • Resolving deprecated dependencies and APIs
  • Modernizing build configurations
  • Containerization and cloud-native patterns
  • Testing strategies during upgrades

Microsoft Learn Resources

📚 Project Structure

src/
├── main/
│   ├── java/edu/wisc/my/messages/
│   │   ├── controller/      # REST API endpoints
│   │   ├── service/         # Business logic & filtering
│   │   ├── model/          # Data models
│   │   ├── data/           # Data access layer
│   │   ├── exception/      # Custom exceptions
│   │   └── time/           # Time-based predicates
│   └── resources/
│       ├── application.properties
│       └── messages.json    # Message data store
└── test/                    # Unit and integration tests

🔨 Building and Running

Local Development (without DevContainer)

# Build the project
mvn clean package

# Run tests
mvn test

# Run integration tests
mvn verify

# Start the application
mvn spring-boot:run

API Endpoints

  • GET /messages - Retrieve messages for authenticated user
  • Message filtering based on audience, date ranges, and user groups

🧪 Testing

The project includes comprehensive test coverage:

  • Unit Tests: *Test.java
  • Integration Tests: *IT.java
  • Code coverage reports via Cobertura

📖 Documentation

For detailed API documentation and usage examples, see docs.

🤝 Contributing

This is a demonstration project for Java upgrade scenarios. Feel free to use it as a reference for your own modernization efforts.

📄 License

See LICENSE file for details.

🔗 Related Resources

About

Legacy Java app modernization demo using Spring Boot 1.5.9 and Java 8, optimized for upgrading to modern Java/Spring versions. Based on uPortal messaging service. DevContainer-ready reference implementation for Java upgrade patterns.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published