From 4b48bacffc6b20c803c049c01d3765df22c169c1 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 11 Feb 2026 07:07:13 +0000
Subject: [PATCH 1/5] Initial plan
From 197de7737a33d0d72ee45e79b13d3e908d8b04d5 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 11 Feb 2026 07:11:15 +0000
Subject: [PATCH 2/5] Upgrade Java from 8 to 21
---
pom.xml | 6 +++---
.../java/com/photoalbum/controller/DetailController.java | 2 +-
.../com/photoalbum/controller/PhotoFileController.java | 2 +-
.../com/photoalbum/service/impl/PhotoServiceImpl.java | 8 ++++----
4 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/pom.xml b/pom.xml
index 216b79d5..732bd783 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,9 +21,9 @@
A simple photo storage and gallery application built with Spring Boot and Oracle DB
- 1.8
- 8
- 8
+ 21
+ 21
+ 21
UTF-8
diff --git a/src/main/java/com/photoalbum/controller/DetailController.java b/src/main/java/com/photoalbum/controller/DetailController.java
index d138ef95..1c091add 100644
--- a/src/main/java/com/photoalbum/controller/DetailController.java
+++ b/src/main/java/com/photoalbum/controller/DetailController.java
@@ -37,7 +37,7 @@ public String detail(@PathVariable String id, Model model) {
try {
Optional photoOpt = photoService.getPhotoById(id);
- if (!photoOpt.isPresent()) {
+ if (photoOpt.isEmpty()) {
return "redirect:/";
}
diff --git a/src/main/java/com/photoalbum/controller/PhotoFileController.java b/src/main/java/com/photoalbum/controller/PhotoFileController.java
index 2f314081..6013ab6e 100644
--- a/src/main/java/com/photoalbum/controller/PhotoFileController.java
+++ b/src/main/java/com/photoalbum/controller/PhotoFileController.java
@@ -45,7 +45,7 @@ public ResponseEntity servePhoto(@PathVariable String id) {
logger.info("=== DEBUGGING: Serving photo request for ID {} ===", id);
Optional photoOpt = photoService.getPhotoById(id);
- if (!photoOpt.isPresent()) {
+ if (photoOpt.isEmpty()) {
logger.warn("Photo with ID {} not found", id);
return ResponseEntity.notFound().build();
}
diff --git a/src/main/java/com/photoalbum/service/impl/PhotoServiceImpl.java b/src/main/java/com/photoalbum/service/impl/PhotoServiceImpl.java
index fa379a51..9211352c 100644
--- a/src/main/java/com/photoalbum/service/impl/PhotoServiceImpl.java
+++ b/src/main/java/com/photoalbum/service/impl/PhotoServiceImpl.java
@@ -91,7 +91,7 @@ public UploadResult uploadPhoto(MultipartFile file) {
// Validate file size
if (file.getSize() > maxFileSizeBytes) {
result.setSuccess(false);
- result.setErrorMessage(String.format("File size exceeds %dMB limit.", maxFileSizeBytes / 1024 / 1024));
+ result.setErrorMessage("File size exceeds %dMB limit.".formatted(maxFileSizeBytes / 1024 / 1024));
logger.warn("Upload rejected: File size {} exceeds limit for {}",
file.getSize(), file.getOriginalFilename());
return result;
@@ -178,7 +178,7 @@ public UploadResult uploadPhoto(MultipartFile file) {
public boolean deletePhoto(String id) {
try {
Optional photoOpt = photoRepository.findById(id);
- if (!photoOpt.isPresent()) {
+ if (photoOpt.isEmpty()) {
logger.warn("Photo with ID {} not found for deletion", id);
return false;
}
@@ -203,7 +203,7 @@ public boolean deletePhoto(String id) {
@Transactional(readOnly = true)
public Optional getPreviousPhoto(Photo currentPhoto) {
List olderPhotos = photoRepository.findPhotosUploadedBefore(currentPhoto.getUploadedAt());
- return olderPhotos.isEmpty() ? Optional.empty() : Optional.of(olderPhotos.get(0));
+ return olderPhotos.isEmpty() ? Optional.empty() : Optional.of(olderPhotos.getFirst());
}
/**
@@ -213,7 +213,7 @@ public Optional getPreviousPhoto(Photo currentPhoto) {
@Transactional(readOnly = true)
public Optional getNextPhoto(Photo currentPhoto) {
List newerPhotos = photoRepository.findPhotosUploadedAfter(currentPhoto.getUploadedAt());
- return newerPhotos.isEmpty() ? Optional.empty() : Optional.of(newerPhotos.get(0));
+ return newerPhotos.isEmpty() ? Optional.empty() : Optional.of(newerPhotos.getFirst());
}
/**
From 7e15ba47defd30fdbad3f2aad2f805ac69d4d8bf Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 11 Feb 2026 07:15:48 +0000
Subject: [PATCH 3/5] Upgrade Spring Boot to 3.3.13 and migrate javax.*
packages to jakarta.*
---
pom.xml | 2 +-
.../java/com/photoalbum/controller/HomeController.java | 2 +-
src/main/java/com/photoalbum/model/Photo.java | 10 +++++-----
3 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/pom.xml b/pom.xml
index 732bd783..966e621d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,7 +8,7 @@
org.springframework.boot
spring-boot-starter-parent
- 2.7.18
+ 3.3.13
diff --git a/src/main/java/com/photoalbum/controller/HomeController.java b/src/main/java/com/photoalbum/controller/HomeController.java
index d9905d97..22d52509 100644
--- a/src/main/java/com/photoalbum/controller/HomeController.java
+++ b/src/main/java/com/photoalbum/controller/HomeController.java
@@ -54,7 +54,7 @@ public String index(Model model) {
*/
@PostMapping("/upload")
@ResponseBody
- public ResponseEntity