Skip to content

Commit 746865a

Browse files
authored
Upgrade to Bitbucket Server 9.4.17 and Java 17 (#30)
* Upgrade to Bitbucket Server 9.4.17 and Java 17 Upgrade dependencies for Java 17 compatibility: Lombok 1.18.44, Mockito 5.23.0, JaCoCo 0.8.14, Jackson 2.17.3. Replace Guava with standard Java utilities to avoid Bitbucket DMZ restrictions. Bundle Jackson modules (jsr310, jdk8, parameter-names) with jackson-core excluded as the platform blocks plugin access via DmzResolverHook.
1 parent 6180374 commit 746865a

File tree

11 files changed

+80
-48
lines changed

11 files changed

+80
-48
lines changed

.github/workflows/maven.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ jobs:
1616

1717
steps:
1818
- uses: actions/checkout@v2
19-
- name: Set up JDK 1.8
19+
- name: Set up JDK 17
2020
uses: actions/setup-java@v1
2121
with:
22-
java-version: 1.8
22+
java-version: 17
2323
- name: Build with Maven
2424
run: mvn -B package --file pom.xml
2525
- name: Coveralls Maven plugin

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
## 3.0.0
2+
3+
- upgrade to Bitbucket Server 9.4.17
4+
- upgrade to Java 17
5+
- upgrade Lombok from 1.18.20 to 1.18.44 (1.18.22+ required for Java 17 support)
6+
- upgrade Mockito from 1.x to 5.23.0 (1.x uses cglib which is incompatible with Java 17 module system)
7+
- upgrade JaCoCo from 0.8.5 to 0.8.14 (0.8.5 does not support Java 17 class file format)
8+
- upgrade Jackson modules to 2.17.3 (aligned with Bitbucket Server BOM)
9+
- remove Guava dependency (Bitbucket Server DMZ blocks `com.google.common` packages from plugins; replaced with standard Java utilities: `List.of()`, `String.isEmpty()`)
10+
- remove unused joda-time imports
11+
- bundle Jackson modules (jsr310, jdk8, parameter-names) with jackson-core excluded (Bitbucket Server DMZ blocks these packages from plugins, but jackson-core/databind are exported by the platform)
12+
113
## 2.0.1
214

315
- upgrade to Bitbucket Server 6.5.1

pom.xml

Lines changed: 41 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<groupId>com.infobip</groupId>
77
<artifactId>jira-version-generator</artifactId>
8-
<version>2.0.2-SNAPSHOT</version>
8+
<version>3.0.0</version>
99
<packaging>atlassian-plugin</packaging>
1010

1111
<name>Jira Version Generator</name>
@@ -63,25 +63,25 @@
6363

6464
<properties>
6565
<!-- DEPENDENCY VERSIONS -->
66-
<bitbucket.version>6.5.1</bitbucket.version>
67-
<amps.version>8.0.1</amps.version>
66+
<bitbucket.version>9.4.17</bitbucket.version>
67+
<amps.version>9.9.1</amps.version>
6868
<slf4j.version>1.7.21</slf4j.version>
6969
<jackson.version>2.12.4</jackson.version>
7070
<assertj-core.version>3.5.2</assertj-core.version>
71-
<mockito-core.version>1.10.19</mockito-core.version>
72-
<bitbucket.data.version>4.8.2</bitbucket.data.version>
71+
<mockito-core.version>5.23.0</mockito-core.version>
72+
<bitbucket.data.version>9.4.17</bitbucket.data.version>
7373

74-
<lombok.version>1.18.20</lombok.version>
74+
<lombok.version>1.18.44</lombok.version>
7575

7676
<!-- PLUGIN VERSIONS -->
7777
<maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
7878
<maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
7979
<coveralls-maven-plugin.version>4.3.0</coveralls-maven-plugin.version>
80-
<jacoco-maven-plugin.version>0.8.5</jacoco-maven-plugin.version>
81-
<bitbucket-maven-plugin.version>1.30.5</bitbucket-maven-plugin.version>
80+
<jacoco-maven-plugin.version>0.8.14</jacoco-maven-plugin.version>
81+
<quickreload-plugin.version>6.2.1</quickreload-plugin.version>
8282

8383
<!-- OTHER PROPERTIES -->
84-
<java.version>1.8</java.version>
84+
<java.version>17</java.version>
8585
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
8686
<maven.javadoc.skip>true</maven.javadoc.skip>
8787
</properties>
@@ -102,22 +102,37 @@
102102
<dependency>
103103
<groupId>com.fasterxml.jackson.core</groupId>
104104
<artifactId>jackson-databind</artifactId>
105-
<version>${jackson.version}</version>
105+
<scope>provided</scope>
106106
</dependency>
107107
<dependency>
108108
<groupId>com.fasterxml.jackson.datatype</groupId>
109109
<artifactId>jackson-datatype-jdk8</artifactId>
110-
<version>${jackson.version}</version>
111-
</dependency>
112-
<dependency>
113-
<groupId>com.fasterxml.jackson.module</groupId>
114-
<artifactId>jackson-module-parameter-names</artifactId>
115-
<version>${jackson.version}</version>
110+
<exclusions>
111+
<exclusion>
112+
<groupId>com.fasterxml.jackson.core</groupId>
113+
<artifactId>*</artifactId>
114+
</exclusion>
115+
</exclusions>
116116
</dependency>
117117
<dependency>
118118
<groupId>com.fasterxml.jackson.datatype</groupId>
119119
<artifactId>jackson-datatype-jsr310</artifactId>
120-
<version>${jackson.version}</version>
120+
<exclusions>
121+
<exclusion>
122+
<groupId>com.fasterxml.jackson.core</groupId>
123+
<artifactId>*</artifactId>
124+
</exclusion>
125+
</exclusions>
126+
</dependency>
127+
<dependency>
128+
<groupId>com.fasterxml.jackson.module</groupId>
129+
<artifactId>jackson-module-parameter-names</artifactId>
130+
<exclusions>
131+
<exclusion>
132+
<groupId>com.fasterxml.jackson.core</groupId>
133+
<artifactId>*</artifactId>
134+
</exclusion>
135+
</exclusions>
121136
</dependency>
122137
<dependency>
123138
<groupId>com.atlassian.sal</groupId>
@@ -156,6 +171,7 @@
156171
<groupId>org.projectlombok</groupId>
157172
<artifactId>lombok</artifactId>
158173
<version>${lombok.version}</version>
174+
<scope>provided</scope>
159175
</dependency>
160176

161177
<dependency>
@@ -193,7 +209,7 @@
193209
<pluginArtifact>
194210
<groupId>com.atlassian.labs.plugins</groupId>
195211
<artifactId>quickreload</artifactId>
196-
<version>${bitbucket-maven-plugin.version}</version>
212+
<version>${quickreload-plugin.version}</version>
197213
</pluginArtifact>
198214
</pluginArtifacts>
199215
</configuration>
@@ -208,6 +224,13 @@
208224
<compilerArgument>-parameters</compilerArgument>
209225
<testCompilerArgument>-parameters</testCompilerArgument>
210226
<encoding>utf8</encoding>
227+
<annotationProcessorPaths>
228+
<path>
229+
<groupId>org.projectlombok</groupId>
230+
<artifactId>lombok</artifactId>
231+
<version>${lombok.version}</version>
232+
</path>
233+
</annotationProcessorPaths>
211234
</configuration>
212235
</plugin>
213236
<plugin>

src/main/java/com/infobip/bitbucket/JiraVersionGeneratorHook.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@
2020
import com.atlassian.bitbucket.repository.RefChange;
2121
import com.atlassian.bitbucket.scope.Scope;
2222
import com.atlassian.bitbucket.setting.*;
23-
import com.google.common.base.Strings;
24-
import com.google.common.collect.ImmutableList;
23+
import java.util.List;
2524
import com.infobip.infrastructure.ClockFactory;
2625
import com.infobip.jira.*;
2726
import org.slf4j.Logger;
@@ -36,14 +35,14 @@ public class JiraVersionGeneratorHook implements PostRepositoryHook, SettingsVal
3635

3736
private final CommitService commitService;
3837
private final JiraService jiraService;
39-
private final ImmutableList<SettingsValidator> settingsValidators;
38+
private final List<SettingsValidator> settingsValidators;
4039

4140
public JiraVersionGeneratorHook(CommitService commitService, JiraService jiraService) {
4241

4342
this.commitService = commitService;
4443
this.jiraService = jiraService;
4544

46-
settingsValidators = ImmutableList.of(new ProjectKeyValidator(), new VersionPatternValidator());
45+
settingsValidators = List.of(new ProjectKeyValidator(), new VersionPatternValidator());
4746
}
4847

4948
@Override
@@ -83,14 +82,15 @@ public void validate(@Nonnull Settings settings,
8382
}
8483

8584
private Optional<String> getNonEmptySetting(RepositoryHookContext context, String key) {
86-
String setting = Strings.emptyToNull(context.getSettings().getString(key));
85+
String setting = context.getSettings().getString(key);
86+
setting = (setting == null || setting.isEmpty()) ? null : setting;
8787
return Optional.ofNullable(setting);
8888
}
8989

9090
private String requireNonEmptySetting(RepositoryHookContext context, String key) {
9191
String setting = context.getSettings().getString(key);
9292

93-
if (Strings.isNullOrEmpty(setting)) {
93+
if (setting == null || setting.isEmpty()) {
9494
String message = String.format("%s hook setting is not set to a non empty value", key);
9595
throw new IllegalStateException(message);
9696
}

src/main/java/com/infobip/jira/Version.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,8 @@
1616
package com.infobip.jira;
1717

1818
import lombok.Value;
19-
import org.joda.time.format.DateTimeFormat;
20-
import org.joda.time.format.DateTimeFormatter;
2119

2220
import java.time.LocalDate;
23-
import java.util.Optional;
2421

2522
@Value
2623
public class Version {

src/main/resources/atlassian-plugin.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<description>${project.description}</description>
44
<version>${project.version}</version>
55
<vendor name="${project.organization.name}" url="${project.organization.url}" />
6+
<param name="application-version.min">9.4.17</param>
67
</plugin-info>
78

89
<component-import key="applicationLinkService" interface="com.atlassian.applinks.api.ApplicationLinkService" />

src/test/java/com/infobip/bitbucket/ProjectKeyValidatorTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@
2121
import org.junit.Test;
2222
import org.junit.runner.RunWith;
2323
import org.mockito.Mock;
24-
import org.mockito.runners.MockitoJUnitRunner;
24+
import org.mockito.junit.MockitoJUnitRunner;
2525

2626
import static org.mockito.BDDMockito.given;
2727
import static org.mockito.BDDMockito.then;
28-
import static org.mockito.Matchers.anyString;
29-
import static org.mockito.Matchers.eq;
28+
import static org.mockito.ArgumentMatchers.anyString;
29+
import static org.mockito.ArgumentMatchers.eq;
3030
import static org.mockito.Mockito.never;
3131

3232
@RunWith(MockitoJUnitRunner.class)

src/test/java/com/infobip/bitbucket/VersionPatternValidatorTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@
2121
import org.junit.Test;
2222
import org.junit.runner.RunWith;
2323
import org.mockito.Mock;
24-
import org.mockito.runners.MockitoJUnitRunner;
24+
import org.mockito.junit.MockitoJUnitRunner;
2525

2626
import static org.mockito.BDDMockito.given;
2727
import static org.mockito.BDDMockito.then;
28-
import static org.mockito.Matchers.anyString;
29-
import static org.mockito.Matchers.eq;
28+
import static org.mockito.ArgumentMatchers.anyString;
29+
import static org.mockito.ArgumentMatchers.eq;
3030
import static org.mockito.Mockito.never;
3131

3232
@RunWith(MockitoJUnitRunner.class)

src/test/java/com/infobip/jira/JiraServiceTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,16 @@
2222
import org.junit.Test;
2323
import org.junit.runner.RunWith;
2424
import org.mockito.*;
25-
import org.mockito.runners.MockitoJUnitRunner;
25+
import org.mockito.junit.MockitoJUnitRunner;
2626

2727
import java.time.LocalDate;
2828
import java.util.Collections;
2929
import java.util.Optional;
3030

3131
import static org.assertj.core.api.BDDAssertions.then;
3232
import static org.mockito.BDDMockito.given;
33-
import static org.mockito.Matchers.any;
34-
import static org.mockito.Matchers.anyString;
33+
import static org.mockito.ArgumentMatchers.any;
34+
import static org.mockito.ArgumentMatchers.anyString;
3535

3636
@RunWith(MockitoJUnitRunner.class)
3737
public class JiraServiceTest {

src/test/java/com/infobip/jira/JiraVersionGeneratorHookTest.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
import org.junit.runner.RunWith;
3232
import org.mockito.InjectMocks;
3333
import org.mockito.Mock;
34-
import org.mockito.runners.MockitoJUnitRunner;
34+
import org.mockito.junit.MockitoJUnitRunner;
3535
import org.mockito.verification.VerificationMode;
3636

3737
import java.io.IOException;
@@ -41,10 +41,10 @@
4141

4242
import static org.mockito.BDDMockito.given;
4343
import static org.mockito.BDDMockito.then;
44-
import static org.mockito.Matchers.any;
45-
import static org.mockito.Matchers.anyString;
46-
import static org.mockito.Matchers.eq;
47-
import static org.mockito.Matchers.refEq;
44+
import static org.mockito.ArgumentMatchers.any;
45+
import static org.mockito.ArgumentMatchers.anyString;
46+
import static org.mockito.ArgumentMatchers.eq;
47+
import static org.mockito.ArgumentMatchers.refEq;
4848
import static org.mockito.Mockito.times;
4949

5050
@RunWith(MockitoJUnitRunner.class)
@@ -83,7 +83,6 @@ public class JiraVersionGeneratorHookTest {
8383
public void setUp() {
8484

8585
given(context.getSettings()).willReturn(settings);
86-
given(settings.getString(anyString(), eq(""))).willReturn("");
8786
given(request.getRepository()).willReturn(repository);
8887
given(latestRefChange.getToHash()).willReturn("latestRefChange");
8988
given(olderRefChange.getToHash()).willReturn("olderRefChange");

0 commit comments

Comments
 (0)