From fabb979816a73f84984fcd2bcd1069b4dd465a67 Mon Sep 17 00:00:00 2001 From: Ryan Slominski Date: Wed, 24 Sep 2025 12:58:04 -0400 Subject: [PATCH 1/7] Bump Java EE 8 to Jakarta EE 10 Fixes #6 --- build.gradle | 17 ++++++----------- .../adm/business/session/AbstractFacade.java | 8 ++++---- .../jlab/adm/business/session/AppEnvFacade.java | 10 +++++----- .../jlab/adm/business/session/AppFacade.java | 6 +++--- .../adm/business/session/DeployJobFacade.java | 12 ++++++------ .../adm/business/session/DeployerFacade.java | 10 +++++----- .../jlab/adm/business/session/SSHFacade.java | 8 ++++---- .../org/jlab/adm/persistence/entity/App.java | 6 +++--- .../org/jlab/adm/persistence/entity/AppEnv.java | 6 +++--- .../jlab/adm/persistence/entity/DeployJob.java | 4 ++-- .../adm/presentation/controller/Choose.java | 10 +++++----- .../adm/presentation/controller/Deploy.java | 16 ++++++++-------- .../jlab/adm/presentation/controller/Log.java | 12 ++++++------ .../controller/inventory/AppEnvs.java | 12 ++++++------ .../presentation/controller/inventory/Apps.java | 12 ++++++------ src/main/resources/META-INF/persistence.xml | 1 - 16 files changed, 72 insertions(+), 78 deletions(-) diff --git a/build.gradle b/build.gradle index a836100..c168859 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ description = 'Application deployment manager app' group = 'org.jlab' version = new File("${projectDir}/VERSION").text.trim() ext.version = project.version -ext.smoothnessVersion = '4.13.0' +ext.smoothnessVersion = '5.0.0' ext.releaseDate = new Date().format('MMM dd yyyy') tasks.withType(JavaCompile).configureEach { @@ -17,10 +17,6 @@ tasks.withType(JavaCompile).configureEach { } repositories { mavenCentral() - - maven { - url = "https://s01.oss.sonatype.org/content/repositories/releases/" - } } dependencies { // No matter what smoothness weblib MUST be included in WAR (https://github.com/JeffersonLab/smoothness/issues/4) @@ -29,13 +25,12 @@ dependencies { implementation 'org.apache.sshd:sshd-core:2.12.1' // Smoothness setup should install these into Wildfly - providedCompile 'org.tuckey:urlrewritefilter:4.0.4' + providedCompile 'org.tuckey:urlrewritefilter:5.1.3' - // Wildfly 26.1.3.Final provides: - providedCompile 'javax:javaee-api:8.0.1', - 'javax.servlet:jstl:1.2', - 'org.hibernate:hibernate-core:5.3.28.Final', - 'org.hibernate:hibernate-envers:5.3.28.Final' + // Wildfly 27.0.1.Final provides: + providedCompile 'jakarta.platform:jakarta.jakartaee-api:10.0.0', + 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api:3.0.2', + 'org.hibernate:hibernate-core:6.6.19.Final' } tasks.named('jar') { enabled = false diff --git a/src/main/java/org/jlab/adm/business/session/AbstractFacade.java b/src/main/java/org/jlab/adm/business/session/AbstractFacade.java index 97a2f68..572b083 100644 --- a/src/main/java/org/jlab/adm/business/session/AbstractFacade.java +++ b/src/main/java/org/jlab/adm/business/session/AbstractFacade.java @@ -1,11 +1,11 @@ package org.jlab.adm.business.session; +import jakarta.annotation.security.PermitAll; +import jakarta.persistence.EntityManager; +import jakarta.persistence.TypedQuery; +import jakarta.persistence.criteria.*; import java.util.ArrayList; import java.util.List; -import javax.annotation.security.PermitAll; -import javax.persistence.EntityManager; -import javax.persistence.TypedQuery; -import javax.persistence.criteria.*; public abstract class AbstractFacade { private final Class entityClass; diff --git a/src/main/java/org/jlab/adm/business/session/AppEnvFacade.java b/src/main/java/org/jlab/adm/business/session/AppEnvFacade.java index b2f2f40..752b7f4 100644 --- a/src/main/java/org/jlab/adm/business/session/AppEnvFacade.java +++ b/src/main/java/org/jlab/adm/business/session/AppEnvFacade.java @@ -1,12 +1,12 @@ package org.jlab.adm.business.session; +import jakarta.annotation.security.PermitAll; +import jakarta.ejb.Stateless; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; +import jakarta.persistence.criteria.*; import java.util.ArrayList; import java.util.List; -import javax.annotation.security.PermitAll; -import javax.ejb.Stateless; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; -import javax.persistence.criteria.*; import org.jlab.adm.persistence.entity.AppEnv; @Stateless diff --git a/src/main/java/org/jlab/adm/business/session/AppFacade.java b/src/main/java/org/jlab/adm/business/session/AppFacade.java index 68374bf..b55baf9 100644 --- a/src/main/java/org/jlab/adm/business/session/AppFacade.java +++ b/src/main/java/org/jlab/adm/business/session/AppFacade.java @@ -1,8 +1,8 @@ package org.jlab.adm.business.session; -import javax.ejb.Stateless; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; +import jakarta.ejb.Stateless; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; import org.jlab.adm.persistence.entity.App; @Stateless diff --git a/src/main/java/org/jlab/adm/business/session/DeployJobFacade.java b/src/main/java/org/jlab/adm/business/session/DeployJobFacade.java index bc06c14..2598907 100644 --- a/src/main/java/org/jlab/adm/business/session/DeployJobFacade.java +++ b/src/main/java/org/jlab/adm/business/session/DeployJobFacade.java @@ -1,14 +1,14 @@ package org.jlab.adm.business.session; +import jakarta.annotation.security.PermitAll; +import jakarta.ejb.Stateless; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; +import jakarta.persistence.TypedQuery; +import jakarta.persistence.criteria.*; import java.math.BigInteger; import java.util.ArrayList; import java.util.List; -import javax.annotation.security.PermitAll; -import javax.ejb.Stateless; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; -import javax.persistence.TypedQuery; -import javax.persistence.criteria.*; import org.jlab.adm.persistence.entity.DeployJob; @Stateless diff --git a/src/main/java/org/jlab/adm/business/session/DeployerFacade.java b/src/main/java/org/jlab/adm/business/session/DeployerFacade.java index 6f9b354..c9ec81f 100644 --- a/src/main/java/org/jlab/adm/business/session/DeployerFacade.java +++ b/src/main/java/org/jlab/adm/business/session/DeployerFacade.java @@ -1,13 +1,13 @@ package org.jlab.adm.business.session; +import jakarta.annotation.Resource; +import jakarta.annotation.security.PermitAll; +import jakarta.ejb.EJB; +import jakarta.ejb.SessionContext; +import jakarta.ejb.Stateless; import java.io.IOException; import java.math.BigInteger; import java.util.regex.Pattern; -import javax.annotation.Resource; -import javax.annotation.security.PermitAll; -import javax.ejb.EJB; -import javax.ejb.SessionContext; -import javax.ejb.Stateless; import org.jlab.adm.persistence.entity.AppEnv; import org.jlab.adm.persistence.entity.DeployJob; import org.jlab.smoothness.business.exception.UserFriendlyException; diff --git a/src/main/java/org/jlab/adm/business/session/SSHFacade.java b/src/main/java/org/jlab/adm/business/session/SSHFacade.java index 4c72543..156b717 100644 --- a/src/main/java/org/jlab/adm/business/session/SSHFacade.java +++ b/src/main/java/org/jlab/adm/business/session/SSHFacade.java @@ -1,5 +1,9 @@ package org.jlab.adm.business.session; +import jakarta.annotation.security.PermitAll; +import jakarta.ejb.Asynchronous; +import jakarta.ejb.EJB; +import jakarta.ejb.Stateless; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.PrintWriter; @@ -9,10 +13,6 @@ import java.util.Date; import java.util.logging.Level; import java.util.logging.Logger; -import javax.annotation.security.PermitAll; -import javax.ejb.Asynchronous; -import javax.ejb.EJB; -import javax.ejb.Stateless; import org.apache.sshd.client.SshClient; import org.apache.sshd.client.session.ClientSession; import org.jlab.adm.persistence.entity.AppEnv; diff --git a/src/main/java/org/jlab/adm/persistence/entity/App.java b/src/main/java/org/jlab/adm/persistence/entity/App.java index fe6c5ab..ad83559 100644 --- a/src/main/java/org/jlab/adm/persistence/entity/App.java +++ b/src/main/java/org/jlab/adm/persistence/entity/App.java @@ -1,11 +1,11 @@ package org.jlab.adm.persistence.entity; +import jakarta.persistence.*; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; import java.io.Serializable; import java.math.BigDecimal; import java.util.Objects; -import javax.persistence.*; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; @Entity @Table(schema = "ADM_OWNER") diff --git a/src/main/java/org/jlab/adm/persistence/entity/AppEnv.java b/src/main/java/org/jlab/adm/persistence/entity/AppEnv.java index 36a13d9..51fbb3d 100644 --- a/src/main/java/org/jlab/adm/persistence/entity/AppEnv.java +++ b/src/main/java/org/jlab/adm/persistence/entity/AppEnv.java @@ -1,11 +1,11 @@ package org.jlab.adm.persistence.entity; +import jakarta.persistence.*; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; import java.io.Serializable; import java.math.BigDecimal; import java.util.Objects; -import javax.persistence.*; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; @Entity @Table(schema = "ADM_OWNER", name = "APP_ENV") diff --git a/src/main/java/org/jlab/adm/persistence/entity/DeployJob.java b/src/main/java/org/jlab/adm/persistence/entity/DeployJob.java index 61a9407..3d26967 100644 --- a/src/main/java/org/jlab/adm/persistence/entity/DeployJob.java +++ b/src/main/java/org/jlab/adm/persistence/entity/DeployJob.java @@ -1,10 +1,10 @@ package org.jlab.adm.persistence.entity; +import jakarta.persistence.*; +import jakarta.validation.constraints.NotNull; import java.io.Serializable; import java.math.BigInteger; import java.util.Date; -import javax.persistence.*; -import javax.validation.constraints.NotNull; @Entity @Table(schema = "ADM_OWNER", name = "DEPLOY_JOB") diff --git a/src/main/java/org/jlab/adm/presentation/controller/Choose.java b/src/main/java/org/jlab/adm/presentation/controller/Choose.java index 9be5e4c..f0c6d9c 100644 --- a/src/main/java/org/jlab/adm/presentation/controller/Choose.java +++ b/src/main/java/org/jlab/adm/presentation/controller/Choose.java @@ -1,11 +1,11 @@ package org.jlab.adm.presentation.controller; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; @WebServlet( name = "Choose", diff --git a/src/main/java/org/jlab/adm/presentation/controller/Deploy.java b/src/main/java/org/jlab/adm/presentation/controller/Deploy.java index b5e4333..5291837 100644 --- a/src/main/java/org/jlab/adm/presentation/controller/Deploy.java +++ b/src/main/java/org/jlab/adm/presentation/controller/Deploy.java @@ -1,18 +1,18 @@ package org.jlab.adm.presentation.controller; +import jakarta.ejb.EJB; +import jakarta.json.Json; +import jakarta.json.JsonObjectBuilder; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.math.BigInteger; import java.util.logging.Level; import java.util.logging.Logger; -import javax.ejb.EJB; -import javax.json.Json; -import javax.json.JsonObjectBuilder; -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import org.jlab.adm.business.session.DeployerFacade; import org.jlab.smoothness.business.exception.UserFriendlyException; diff --git a/src/main/java/org/jlab/adm/presentation/controller/Log.java b/src/main/java/org/jlab/adm/presentation/controller/Log.java index 100ae8c..499b986 100644 --- a/src/main/java/org/jlab/adm/presentation/controller/Log.java +++ b/src/main/java/org/jlab/adm/presentation/controller/Log.java @@ -1,16 +1,16 @@ package org.jlab.adm.presentation.controller; +import jakarta.ejb.EJB; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.math.BigInteger; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; -import javax.ejb.EJB; -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import org.jlab.adm.business.session.DeployJobFacade; import org.jlab.adm.persistence.entity.DeployJob; import org.jlab.smoothness.presentation.util.Paginator; diff --git a/src/main/java/org/jlab/adm/presentation/controller/inventory/AppEnvs.java b/src/main/java/org/jlab/adm/presentation/controller/inventory/AppEnvs.java index fc7b43b..5abba8a 100644 --- a/src/main/java/org/jlab/adm/presentation/controller/inventory/AppEnvs.java +++ b/src/main/java/org/jlab/adm/presentation/controller/inventory/AppEnvs.java @@ -1,13 +1,13 @@ package org.jlab.adm.presentation.controller.inventory; +import jakarta.ejb.EJB; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; -import javax.ejb.EJB; -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import org.jlab.adm.business.session.AbstractFacade; import org.jlab.adm.business.session.AppEnvFacade; import org.jlab.adm.persistence.entity.AppEnv; diff --git a/src/main/java/org/jlab/adm/presentation/controller/inventory/Apps.java b/src/main/java/org/jlab/adm/presentation/controller/inventory/Apps.java index d9b95b5..6ac3ffa 100644 --- a/src/main/java/org/jlab/adm/presentation/controller/inventory/Apps.java +++ b/src/main/java/org/jlab/adm/presentation/controller/inventory/Apps.java @@ -1,13 +1,13 @@ package org.jlab.adm.presentation.controller.inventory; +import jakarta.ejb.EJB; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; -import javax.ejb.EJB; -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import org.jlab.adm.business.session.AbstractFacade; import org.jlab.adm.business.session.AppFacade; import org.jlab.adm.persistence.entity.App; diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml index 251a683..c780262 100644 --- a/src/main/resources/META-INF/persistence.xml +++ b/src/main/resources/META-INF/persistence.xml @@ -9,7 +9,6 @@ NONE - org.jlab.smoothness.persistence.entity.Setting From eb4f5fffe46aad5adf817bdf4a8c9a187775b394 Mon Sep 17 00:00:00 2001 From: Ryan Slominski Date: Wed, 24 Sep 2025 12:59:30 -0400 Subject: [PATCH 2/7] Dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 6b81d78..ebbfc58 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ARG BUILD_IMAGE=gradle:9-jdk21 -ARG RUN_IMAGE=jeffersonlab/wildfly:1.6.2 +ARG RUN_IMAGE=jeffersonlab/wildfly:2.2.0 ################## Stage 0 FROM ${BUILD_IMAGE} AS builder From fa7f0cb0effb4a4d9083bcfee31dd2f889555ba8 Mon Sep 17 00:00:00 2001 From: Ryan Slominski Date: Wed, 24 Sep 2025 13:03:01 -0400 Subject: [PATCH 3/7] taglib declarations --- build.gradle | 3 ++- src/main/webapp/WEB-INF/tags/primary-nav.tag | 6 +++--- src/main/webapp/WEB-INF/tags/setup-nav.tag | 6 +++--- src/main/webapp/WEB-INF/views/choose.jsp | 6 +++--- src/main/webapp/WEB-INF/views/inventory/app-envs.jsp | 6 +++--- src/main/webapp/WEB-INF/views/inventory/apps.jsp | 6 +++--- src/main/webapp/WEB-INF/views/log.jsp | 6 +++--- src/main/webapp/WEB-INF/web.xml | 6 +++--- 8 files changed, 23 insertions(+), 22 deletions(-) diff --git a/build.gradle b/build.gradle index c168859..164ce27 100644 --- a/build.gradle +++ b/build.gradle @@ -30,7 +30,8 @@ dependencies { // Wildfly 27.0.1.Final provides: providedCompile 'jakarta.platform:jakarta.jakartaee-api:10.0.0', 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api:3.0.2', - 'org.hibernate:hibernate-core:6.6.19.Final' + 'org.hibernate:hibernate-core:6.6.19.Final', + 'org.glassfish.web:jakarta.servlet.jsp.jstl:3.0.0' // Impl may vary, declaration helps IntelliJ find taglib URI } tasks.named('jar') { enabled = false diff --git a/src/main/webapp/WEB-INF/tags/primary-nav.tag b/src/main/webapp/WEB-INF/tags/primary-nav.tag index 9a43d8b..9f9c0ca 100644 --- a/src/main/webapp/WEB-INF/tags/primary-nav.tag +++ b/src/main/webapp/WEB-INF/tags/primary-nav.tag @@ -1,7 +1,7 @@ <%@tag description="Primary Navigation Tag" pageEncoding="UTF-8"%> -<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> -<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> -<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<%@taglib prefix="c" uri="jakarta.tags.core"%> +<%@taglib prefix="fn" uri="jakarta.tags.functions"%> +<%@taglib prefix="fmt" uri="jakarta.tags.fmt"%> <%@taglib prefix="s" uri="http://jlab.org/jsp/smoothness"%>