diff --git a/Jenkinsfile b/Jenkinsfile index dcfc829..976e123 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -20,6 +20,8 @@ pipeline { } } + // Build the local shaded Jersey module first so the root plugin can resolve com.codedx:jersey-shaded + sh 'cd jersey-shaded && atlas-mvn install -DskipTests' sh 'atlas-unit-test' sh 'atlas-package' } diff --git a/jersey-shaded/pom.xml b/jersey-shaded/pom.xml index 23d2d34..dbedcae 100644 --- a/jersey-shaded/pom.xml +++ b/jersey-shaded/pom.xml @@ -6,7 +6,7 @@ 4.0.0 com.codedx jersey-shaded - 2.0.1 + 3.0.0 jar Jersey 3.x Shaded (relocated to com.codedx.shaded.*) @@ -91,7 +91,7 @@ org.apache.maven.plugins maven-shade-plugin - 3.5.3 + 3.2.4 package @@ -168,6 +168,39 @@ META-INF/MANIFEST.MF + + + jakarta.inject:jakarta.inject-api + + ** + + + + jakarta.activation:jakarta.activation-api + + ** + + + + jakarta.xml.bind:jakarta.xml.bind-api + + ** + + + + + org.javassist:javassist + + ** + + diff --git a/pom.xml b/pom.xml index 130f8e0..1e47699 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ 4.0.0 com.codedx codedx-bamboo-plugin - 2.0.1 + 3.0.0 Code Dx @@ -19,10 +19,9 @@ atlassian-plugin - - 10.2.0 + 12.0.0 ${bamboo.version} - 9.11.6 + 9.12.1 2.0.2 6.0.2 3.1.11 @@ -57,7 +56,7 @@ com.codedx jersey-shaded - 2.0.1 + 3.0.0 org.glassfish.jersey.core @@ -155,15 +154,16 @@ jakarta.ws.rs jakarta.ws.rs-api 3.1.0 + provided @@ -210,6 +210,16 @@ org.glassfish.hk2 osgi-resource-locator + + + net.sf.ehcache + ehcache + @@ -251,11 +261,47 @@ com.fasterxml.jackson.module jackson-module-jakarta-xmlbind-annotations ${jackson-version} + + + + jakarta.xml.bind + jakarta.xml.bind-api + + + jakarta.activation + jakarta.activation-api + + + com.sun.activation + jakarta.activation + + + javax.xml.bind + jaxb-api + + + com.sun.istack + istack-commons-runtime + + + com.sun.xml.fastinfoset + FastInfoset + + + org.glassfish.jaxb + jaxb-runtime + + jakarta.annotation jakarta.annotation-api ${jakarta-annotation-version} + provided @@ -267,6 +313,69 @@ + + + + + org.glassfish.jaxb + jaxb-runtime + 4.0.5 + provided + + + javax.xml.bind + jaxb-api + 2.3.1 + provided + + + com.sun.istack + istack-commons-runtime + 4.1.2 + provided + + + com.sun.xml.fastinfoset + FastInfoset + 2.1.1 + provided + + + + jakarta.xml.bind + jakarta.xml.bind-api + 3.0.1 + provided + + + jakarta.activation + jakarta.activation-api + 2.1.0 + provided + + + com.sun.activation + jakarta.activation + 2.0.1 + provided + + + jakarta.inject + jakarta.inject-api + 2.0.1 + provided + + + + @@ -298,18 +407,14 @@ !jdk.internal*, !sun.misc*, !javassist*, - !jakarta.inject*, - !jakarta.annotation*, !org.aopalliance*, - !jakarta.validation*, !com.opensymphony*, + jakarta.*;resolution:=optional, *;resolution:=optional jersey-shaded, - jakarta.ws.rs-api, - jakarta.annotation-api, jackson-core, jackson-annotations, jackson-databind, diff --git a/src/main/java/com/codedx/plugins/bamboo/ProjectRefresherServlet.java b/src/main/java/com/codedx/plugins/bamboo/ProjectRefresherServlet.java index c8fb929..faf23f5 100644 --- a/src/main/java/com/codedx/plugins/bamboo/ProjectRefresherServlet.java +++ b/src/main/java/com/codedx/plugins/bamboo/ProjectRefresherServlet.java @@ -8,10 +8,10 @@ import org.apache.log4j.Logger; import javax.net.ssl.SSLHandshakeException; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.ConnectException; import java.net.UnknownHostException; diff --git a/src/main/java/com/codedx/plugins/bamboo/ServerConfigServlet.java b/src/main/java/com/codedx/plugins/bamboo/ServerConfigServlet.java index c5fddd0..dd1ba4e 100644 --- a/src/main/java/com/codedx/plugins/bamboo/ServerConfigServlet.java +++ b/src/main/java/com/codedx/plugins/bamboo/ServerConfigServlet.java @@ -2,10 +2,10 @@ import org.apache.log4j.Logger; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; @@ -20,6 +20,13 @@ public class ServerConfigServlet extends HttpServlet { private static final Logger log = Logger.getLogger(ServerConfigServlet.class); + private static final String SAVED_BANNER_HTML = + "
" + + " " + + " Configuration saved successfully." + + " " + + "
"; + @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { @@ -33,11 +40,15 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) String atlToken = req.getParameter("atl_token"); if (atlToken == null) atlToken = ""; + boolean saved = "true".equals(req.getParameter("saved")); + String savedBanner = saved ? SAVED_BANNER_HTML : ""; + String html = loadTemplate(); html = html.replace("${url}", escapeHtml(url)); html = html.replace("${apiKey}", escapeHtml(apiKey)); html = html.replace("${fingerprint}", escapeHtml(fingerprint)); html = html.replace("${atl_token}", escapeHtml(atlToken)); + html = html.replace("${savedBanner}", savedBanner); resp.setContentType("text/html;charset=UTF-8"); PrintWriter out = resp.getWriter(); @@ -60,8 +71,8 @@ protected void doPost(HttpServletRequest req, HttpServletResponse resp) log.info("Configuration saved successfully"); - // Redirect back to GET to show the saved values (PRG pattern) - resp.sendRedirect(req.getRequestURI()); + // PRG pattern: redirect back to GET with saved=true to show success banner + resp.sendRedirect(req.getRequestURI() + "?saved=true"); } private String loadTemplate() throws IOException { diff --git a/src/main/resources/admin/serverConfig.ftl b/src/main/resources/admin/serverConfig.ftl index 7075439..94583cf 100644 --- a/src/main/resources/admin/serverConfig.ftl +++ b/src/main/resources/admin/serverConfig.ftl @@ -3,94 +3,102 @@ Code Dx Plugin Configuration + +

Code Dx Plugin Configuration

-
- -
- -
- - - - -
-
- The format is as follows: https://<host>:<port>/<webapp_path>/
- Can be overridden on Task Configuration page. -
-
+ ${savedBanner} -
- -
- - - - -
-
- Verify that the API key you provide has the appropriate project permissions on the Code Dx admin page.
- Can be overridden on Task Configuration page. +
+ + + +
+ +
+ + + + +
+
+ The format is as follows: https://<host>:<port>/<webapp_path>/
+ Can be overridden on Task Configuration page. +
-
-
- -
- - - - +
+ +
+ + + + +
+
+ Verify that the API key you provide has the appropriate project permissions on the Code Dx admin page.
+ Can be overridden on Task Configuration page. +
-
- If you're using a self-signed certificate, provide its SHA1 Fingerprint here.
- Can be overridden on Task Configuration page. + +
+ +
+ + + + +
+
+ If you're using a self-signed certificate, provide its SHA1 Fingerprint here.
+ Can be overridden on Task Configuration page. +
-
-
- -
- +
+ +
+ +