diff --git a/bots/tester/src/test/java/org/openjdk/skara/bots/tester/InMemoryHostedRepository.java b/bots/tester/src/test/java/org/openjdk/skara/bots/tester/InMemoryHostedRepository.java index 0b7ded70e..bae662062 100644 --- a/bots/tester/src/test/java/org/openjdk/skara/bots/tester/InMemoryHostedRepository.java +++ b/bots/tester/src/test/java/org/openjdk/skara/bots/tester/InMemoryHostedRepository.java @@ -91,6 +91,11 @@ public URI webUrl() { return webUrl; } + @Override + public URI nonTransformedWebUrl() { + return webUrl(); + } + @Override public URI webUrl(Hash hash) { return null; diff --git a/forge/src/main/java/org/openjdk/skara/forge/HostedRepository.java b/forge/src/main/java/org/openjdk/skara/forge/HostedRepository.java index 0aab9380b..d7a9a89b2 100644 --- a/forge/src/main/java/org/openjdk/skara/forge/HostedRepository.java +++ b/forge/src/main/java/org/openjdk/skara/forge/HostedRepository.java @@ -56,6 +56,7 @@ PullRequest createPullRequest(HostedRepository target, Optional parent(); URI url(); URI webUrl(); + URI nonTransformedWebUrl(); URI webUrl(Hash hash); VCS repositoryType(); String fileContents(String filename, String ref); diff --git a/forge/src/main/java/org/openjdk/skara/forge/github/GitHubHost.java b/forge/src/main/java/org/openjdk/skara/forge/github/GitHubHost.java index ee7124024..3fd342a96 100644 --- a/forge/src/main/java/org/openjdk/skara/forge/github/GitHubHost.java +++ b/forge/src/main/java/org/openjdk/skara/forge/github/GitHubHost.java @@ -137,11 +137,15 @@ public URI getURI() { } URI getWebURI(String endpoint) { + return getWebURI(endpoint, true); + } + + URI getWebURI(String endpoint, boolean transform) { var baseWebUri = URIBuilder.base(uri) .setPath(endpoint) .build(); - if (webUriPattern == null) { + if (webUriPattern == null || !transform) { return baseWebUri; } diff --git a/forge/src/main/java/org/openjdk/skara/forge/github/GitHubRepository.java b/forge/src/main/java/org/openjdk/skara/forge/github/GitHubRepository.java index a85d6ba2a..1e44e476f 100644 --- a/forge/src/main/java/org/openjdk/skara/forge/github/GitHubRepository.java +++ b/forge/src/main/java/org/openjdk/skara/forge/github/GitHubRepository.java @@ -188,6 +188,12 @@ public URI webUrl() { return gitHubHost.getWebURI(endpoint); } + @Override + public URI nonTransformedWebUrl() { + var endpoint = "/" + repository; + return gitHubHost.getWebURI(endpoint, false); + } + @Override public URI webUrl(Hash hash) { var endpoint = "/" + repository + "/commit/" + hash.abbreviate(); diff --git a/forge/src/main/java/org/openjdk/skara/forge/gitlab/GitLabRepository.java b/forge/src/main/java/org/openjdk/skara/forge/gitlab/GitLabRepository.java index 5b50bd5fb..39b32f216 100644 --- a/forge/src/main/java/org/openjdk/skara/forge/gitlab/GitLabRepository.java +++ b/forge/src/main/java/org/openjdk/skara/forge/gitlab/GitLabRepository.java @@ -159,6 +159,11 @@ public URI webUrl() { .build(); } + @Override + public URI nonTransformedWebUrl() { + return webUrl(); + } + @Override public URI webUrl(Hash hash) { return URIBuilder.base(gitLabHost.getUri()) diff --git a/forge/src/test/java/org/openjdk/skara/forge/github/GitHubHostTests.java b/forge/src/test/java/org/openjdk/skara/forge/github/GitHubHostTests.java index 2af227644..1c32e9cdc 100644 --- a/forge/src/test/java/org/openjdk/skara/forge/github/GitHubHostTests.java +++ b/forge/src/test/java/org/openjdk/skara/forge/github/GitHubHostTests.java @@ -41,4 +41,14 @@ void webUriPatternReplacement() throws IOException, URISyntaxException { assertEquals(new URI("http://www.example.com/another/hello"), host.getWebURI("/test/hello")); } } + + @Test + void nonTransformedWebUrl() throws IOException, URISyntaxException { + try (var tempFolder = new TemporaryDirectory()) { + var host = new GitHubHost(URIBuilder.base("http://www.example.com").build(), + Pattern.compile("^(http://www.example.com)/test/(.*)$"), "$1/another/$2"); + assertEquals(new URI("http://www.example.com/another/hello"), host.getWebURI("/test/hello")); + assertEquals(new URI("http://www.example.com/test/hello"), host.getWebURI("/test/hello", false)); + } + } } diff --git a/test/src/main/java/org/openjdk/skara/test/TestHostedRepository.java b/test/src/main/java/org/openjdk/skara/test/TestHostedRepository.java index 4ab7d04d3..67a16c43e 100644 --- a/test/src/main/java/org/openjdk/skara/test/TestHostedRepository.java +++ b/test/src/main/java/org/openjdk/skara/test/TestHostedRepository.java @@ -126,6 +126,11 @@ public URI webUrl() { return url(); } + @Override + public URI nonTransformedWebUrl() { + return url(); + } + @Override public URI webUrl(Hash hash) { try {