From 1c84367506707ed9905dab20721e332447515f9c Mon Sep 17 00:00:00 2001 From: Mark Waite Date: Sat, 3 Aug 2024 07:39:00 -0600 Subject: [PATCH] Adapt git browsers for Jetty 12 EE 9 transition (#1620) No need to throw ServletException when checking for URL validity. IOException is sufficient and avoids including Jakarta EE in the method signature. Testing done: * Confirmed that AssemblaWeb still reports the expected message when an invalid URL is provided and that it reports no message when a valid URL is provided. Confirmed that Assembla has changed URLs and broken the browsing links that previously worked. Separate bug report * Confirmed that GitBlit browsing works as expected by installing a GitBlit server. https://hub.docker.com/r/gitblit/gitblit * Confirmed that ViewGit browser provides change links as expected. Confirmed that the ViewGit URL check logic no longer works on the site used as an example. Now reports that https://repo.or.cz/ does not look like a ViewGit site. Separate bug report Did not check Gitiles because the Gitiles source repository is archived on GitHub at https://github.com/google/gitiles . No further development is expected. Did not check TFS2013 because I have no idea where to find a Team Foundation Server 2013 installation. Did not check Fisheye because I could not find a Fisheye server on the public internet. --- .../java/hudson/plugins/git/browser/AssemblaWeb.java | 9 +++++++-- .../plugins/git/browser/FisheyeGitRepositoryBrowser.java | 8 ++++++-- .../plugins/git/browser/GitBlitRepositoryBrowser.java | 8 ++++++-- src/main/java/hudson/plugins/git/browser/Gitiles.java | 8 ++++++-- .../plugins/git/browser/TFS2013GitRepositoryBrowser.java | 8 ++++++-- src/main/java/hudson/plugins/git/browser/ViewGitWeb.java | 8 ++++++-- 6 files changed, 37 insertions(+), 12 deletions(-) diff --git a/src/main/java/hudson/plugins/git/browser/AssemblaWeb.java b/src/main/java/hudson/plugins/git/browser/AssemblaWeb.java index 243df70372..a9af9b07b8 100644 --- a/src/main/java/hudson/plugins/git/browser/AssemblaWeb.java +++ b/src/main/java/hudson/plugins/git/browser/AssemblaWeb.java @@ -116,7 +116,7 @@ public FormValidation doCheckRepoUrl(@AncestorInPath Item project, @QueryParamet return FormValidation.error(Messages.invalidUrl()); } return new URLCheck() { - protected FormValidation check() throws IOException, ServletException { + protected FormValidation check() throws IOException { String v = cleanUrl; if (!v.endsWith("/")) { v += '/'; @@ -129,7 +129,12 @@ protected FormValidation check() throws IOException, ServletException { return FormValidation.error("This is a valid URL but it does not look like Assembla"); } } catch (IOException e) { - return FormValidation.error("Exception reading from Assembla URL " + cleanUrl + " : " + handleIOException(v, e)); + String prefix = "Exception reading from Assembla URL " + cleanUrl + " : "; + if (e.getMessage().equals(v)) { + return FormValidation.error(prefix + "Unable to connect " + v, e); + } else { + return FormValidation.error(prefix + "ERROR: " + e.getMessage(), e); + } } } }.check(); diff --git a/src/main/java/hudson/plugins/git/browser/FisheyeGitRepositoryBrowser.java b/src/main/java/hudson/plugins/git/browser/FisheyeGitRepositoryBrowser.java index e81322bc6b..dc780d2f18 100644 --- a/src/main/java/hudson/plugins/git/browser/FisheyeGitRepositoryBrowser.java +++ b/src/main/java/hudson/plugins/git/browser/FisheyeGitRepositoryBrowser.java @@ -108,7 +108,7 @@ public FormValidation doCheckRepoUrl(@QueryParameter(fixEmpty = true) String val final String finalValue = value; return new URLCheck() { @Override - protected FormValidation check() throws IOException, ServletException { + protected FormValidation check() throws IOException { try { if (findText(open(new URL(finalValue)), "FishEye")) { return FormValidation.ok(); @@ -116,7 +116,11 @@ protected FormValidation check() throws IOException, ServletException { return FormValidation.error("This is a valid URL but it doesn't look like FishEye"); } } catch (IOException e) { - return handleIOException(finalValue, e); + if (e.getMessage().equals(finalValue)) { + return FormValidation.error("Unable to connect " + finalValue, e); + } else { + return FormValidation.error(e.getMessage(), e); + } } } }.check(); diff --git a/src/main/java/hudson/plugins/git/browser/GitBlitRepositoryBrowser.java b/src/main/java/hudson/plugins/git/browser/GitBlitRepositoryBrowser.java index 7e2c616ae8..358339cfc4 100644 --- a/src/main/java/hudson/plugins/git/browser/GitBlitRepositoryBrowser.java +++ b/src/main/java/hudson/plugins/git/browser/GitBlitRepositoryBrowser.java @@ -102,7 +102,7 @@ public FormValidation doCheckRepoUrl(@AncestorInPath Item project, @QueryParamet return FormValidation.error(Messages.invalidUrl()); } return new URLCheck() { - protected FormValidation check() throws IOException, ServletException { + protected FormValidation check() throws IOException { String v = cleanUrl; if (!v.endsWith("/")) { v += '/'; @@ -115,7 +115,11 @@ protected FormValidation check() throws IOException, ServletException { return FormValidation.error("This is a valid URL but it doesn't look like Gitblit"); } } catch (IOException e) { - return handleIOException(v, e); + if (e.getMessage().equals(v)) { + return FormValidation.error("Unable to connect " + v, e); + } else { + return FormValidation.error(e.getMessage(), e); + } } } }.check(); diff --git a/src/main/java/hudson/plugins/git/browser/Gitiles.java b/src/main/java/hudson/plugins/git/browser/Gitiles.java index 5fc2b80901..7e6156d63b 100644 --- a/src/main/java/hudson/plugins/git/browser/Gitiles.java +++ b/src/main/java/hudson/plugins/git/browser/Gitiles.java @@ -88,7 +88,7 @@ public FormValidation doCheckRepoUrl(@AncestorInPath Item project, @QueryParamet return FormValidation.error(Messages.invalidUrl()); } return new URLCheck() { - protected FormValidation check() throws IOException, ServletException { + protected FormValidation check() throws IOException { String v = cleanUrl; if (!v.endsWith("/")) v += '/'; @@ -101,7 +101,11 @@ protected FormValidation check() throws IOException, ServletException { return FormValidation.error("This is a valid URL but it doesn't look like Gitiles"); } } catch (IOException e) { - return handleIOException(v, e); + if (e.getMessage().equals(v)) { + return FormValidation.error("Unable to connect " + v, e); + } else { + return FormValidation.error(e.getMessage(), e); + } } } }.check(); diff --git a/src/main/java/hudson/plugins/git/browser/TFS2013GitRepositoryBrowser.java b/src/main/java/hudson/plugins/git/browser/TFS2013GitRepositoryBrowser.java index a76a8e51d3..89f99be3d9 100644 --- a/src/main/java/hudson/plugins/git/browser/TFS2013GitRepositoryBrowser.java +++ b/src/main/java/hudson/plugins/git/browser/TFS2013GitRepositoryBrowser.java @@ -140,7 +140,7 @@ public FormValidation doCheckRepoUrl(@QueryParameter(fixEmpty = true) String val final String finalValue = value; return new FormValidation.URLCheck() { @Override - protected FormValidation check() throws IOException, ServletException { + protected FormValidation check() throws IOException { try { if (findText(open(new URL(finalValue)), "icrosoft")) { return FormValidation.ok(); @@ -148,7 +148,11 @@ protected FormValidation check() throws IOException, ServletException { return FormValidation.error("This is a valid URL but it doesn't look like a Microsoft server"); } } catch (IOException e) { - return handleIOException(finalValue, e); + if (e.getMessage().equals(finalValue)) { + return FormValidation.error("Unable to connect " + finalValue, e); + } else { + return FormValidation.error(e.getMessage(), e); + } } } }.check(); diff --git a/src/main/java/hudson/plugins/git/browser/ViewGitWeb.java b/src/main/java/hudson/plugins/git/browser/ViewGitWeb.java index af62841ad1..27bf8bdc33 100644 --- a/src/main/java/hudson/plugins/git/browser/ViewGitWeb.java +++ b/src/main/java/hudson/plugins/git/browser/ViewGitWeb.java @@ -107,7 +107,7 @@ public FormValidation doCheckRepoUrl(@AncestorInPath Item project, @QueryParamet return FormValidation.error(Messages.invalidUrl()); } return new URLCheck() { - protected FormValidation check() throws IOException, ServletException { + protected FormValidation check() throws IOException { String v = cleanUrl; if (!v.endsWith("/")) v += '/'; @@ -119,7 +119,11 @@ protected FormValidation check() throws IOException, ServletException { return FormValidation.error("This is a valid URL but it doesn't look like ViewGit"); } } catch (IOException e) { - return handleIOException(v, e); + if (e.getMessage().equals(v)) { + return FormValidation.error("Unable to connect " + v, e); + } else { + return FormValidation.error(e.getMessage(), e); + } } } }.check();