Skip to content

Commit 5f0a16c

Browse files
Require Jenkins 2.479.1 or newer and Jakarta EE 9 (#314)
* Require 2.479.1 or newer * Use Java 17 features and cleanup
1 parent 480cefa commit 5f0a16c

13 files changed

+55
-74
lines changed

pom.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@
4747

4848
<properties>
4949
<!-- https://www.jenkins.io/doc/developer/plugin-development/choosing-jenkins-baseline/ -->
50-
<jenkins.baseline>2.426</jenkins.baseline>
51-
<jenkins.version>${jenkins.baseline}.1</jenkins.version>
50+
<jenkins.baseline>2.479</jenkins.baseline>
51+
<jenkins.version>${jenkins.baseline}.3</jenkins.version>
5252
<hpi.compatibleSinceVersion>2.0.0</hpi.compatibleSinceVersion>
5353
<spotless.check.skip>false</spotless.check.skip>
5454
</properties>
@@ -58,7 +58,7 @@
5858
<dependency>
5959
<groupId>io.jenkins.tools.bom</groupId>
6060
<artifactId>bom-${jenkins.baseline}.x</artifactId>
61-
<version>2884.vc36b_64ce114a_</version>
61+
<version>4228.v0a_71308d905b_</version>
6262
<type>pom</type>
6363
<scope>import</scope>
6464
</dependency>

src/main/java/io/jenkins/plugins/DingTalkGlobalConfig.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import org.jenkinsci.Symbol;
2323
import org.kohsuke.stapler.DataBoundConstructor;
2424
import org.kohsuke.stapler.DataBoundSetter;
25-
import org.kohsuke.stapler.StaplerRequest;
25+
import org.kohsuke.stapler.StaplerRequest2;
2626

2727
/**
2828
* 全局配置
@@ -106,7 +106,7 @@ public DingTalkGlobalConfig() {
106106
}
107107

108108
@Override
109-
public boolean configure(StaplerRequest req, JSONObject json) throws FormException {
109+
public boolean configure(StaplerRequest2 req, JSONObject json) throws FormException {
110110
Object robotConfigObj = json.get("robotConfigs");
111111

112112
if (robotConfigObj == null) {

src/main/java/io/jenkins/plugins/DingTalkManagementLink.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
import hudson.model.ManagementLink;
77
import hudson.util.FormApply;
88
import java.io.IOException;
9-
import javax.servlet.ServletException;
9+
import jakarta.servlet.ServletException;
1010
import jenkins.model.Jenkins;
11-
import org.kohsuke.stapler.StaplerRequest;
12-
import org.kohsuke.stapler.StaplerResponse;
11+
import org.kohsuke.stapler.StaplerRequest2;
12+
import org.kohsuke.stapler.StaplerResponse2;
1313
import org.kohsuke.stapler.verb.POST;
1414

1515
@Extension(ordinal = Double.MAX_VALUE)
@@ -37,7 +37,7 @@ public String getDescription() {
3737
}
3838

3939
@POST
40-
public void doConfigure(StaplerRequest req, StaplerResponse res)
40+
public void doConfigure(StaplerRequest2 req, StaplerResponse2 res)
4141
throws ServletException, FormException, IOException {
4242
getDingTalkGlobalConfigDescriptor().configure(req, req.getSubmittedForm());
4343
FormApply.success(req.getContextPath() + "/manage").generateResponse(req, res, null);

src/main/java/io/jenkins/plugins/DingTalkRunListener.java

+8-16
Original file line numberDiff line numberDiff line change
@@ -85,22 +85,14 @@ private NoticeOccasionEnum getNoticeOccasion(Result result) {
8585
}
8686

8787
private BuildStatusEnum getBuildStatus(NoticeOccasionEnum noticeOccasion) {
88-
switch (noticeOccasion) {
89-
case START:
90-
return BuildStatusEnum.START;
91-
case SUCCESS:
92-
return BuildStatusEnum.SUCCESS;
93-
case FAILURE:
94-
return BuildStatusEnum.FAILURE;
95-
case ABORTED:
96-
return BuildStatusEnum.ABORTED;
97-
case UNSTABLE:
98-
return BuildStatusEnum.UNSTABLE;
99-
case NOT_BUILT:
100-
return BuildStatusEnum.NOT_BUILT;
101-
default:
102-
return BuildStatusEnum.UNKNOWN;
103-
}
88+
return switch (noticeOccasion) {
89+
case START -> BuildStatusEnum.START;
90+
case SUCCESS -> BuildStatusEnum.SUCCESS;
91+
case FAILURE -> BuildStatusEnum.FAILURE;
92+
case ABORTED -> BuildStatusEnum.ABORTED;
93+
case UNSTABLE -> BuildStatusEnum.UNSTABLE;
94+
case NOT_BUILT -> BuildStatusEnum.NOT_BUILT;
95+
};
10496
}
10597

10698
private BuildExecutor getExecutorFromUser(Run<?, ?> run, TaskListener listener) {

src/main/java/io/jenkins/plugins/DingTalkStep.java

+6-3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import io.jenkins.plugins.service.DingTalkService;
1313
import io.jenkins.plugins.tools.DingTalkUtils;
1414
import io.jenkins.plugins.tools.Utils;
15+
16+
import java.io.Serial;
1517
import java.util.Arrays;
1618
import java.util.HashSet;
1719
import java.util.List;
@@ -207,6 +209,7 @@ public StepExecution start(StepContext context) throws Exception {
207209

208210
private static class DingTalkStepExecution extends StepExecution {
209211

212+
@Serial
210213
private static final long serialVersionUID = 1L;
211214
private final transient DingTalkStep step;
212215

@@ -242,9 +245,9 @@ public static class DescriptorImpl extends StepDescriptor {
242245

243246
@Override
244247
public Set<? extends Class<?>> getRequiredContext() {
245-
return new HashSet<Class<?>>() {{
246-
add(Run.class);
247-
add(TaskListener.class);
248+
return new HashSet<>() {{
249+
add(Run.class);
250+
add(TaskListener.class);
248251
}};
249252
}
250253

src/main/java/io/jenkins/plugins/DingTalkUserProperty.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
import hudson.model.UserPropertyDescriptor;
99
import lombok.Getter;
1010
import net.sf.json.JSONObject;
11-
import org.kohsuke.stapler.StaplerRequest;
11+
import org.kohsuke.stapler.StaplerRequest2;
1212

13+
@Getter
1314
public class DingTalkUserProperty extends UserProperty {
1415

15-
@Getter
1616
private String mobile;
1717

1818
public DingTalkUserProperty(String mobile) {
@@ -34,7 +34,7 @@ public UserProperty newInstance(User user) {
3434
}
3535

3636
@Override
37-
public UserProperty newInstance(@Nullable StaplerRequest req, @NonNull JSONObject formData) {
37+
public UserProperty newInstance(@Nullable StaplerRequest2 req, @NonNull JSONObject formData) {
3838
return new DingTalkUserProperty(formData.optString("mobile"));
3939
}
4040
}

src/main/java/io/jenkins/plugins/enums/NoticeOccasionEnum.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
*
99
* @author liuwei
1010
*/
11+
@Getter
1112
public enum NoticeOccasionEnum {
1213
/**
1314
* 在启动构建时通知
@@ -39,7 +40,6 @@ public enum NoticeOccasionEnum {
3940
*/
4041
NOT_BUILT(Messages.NoticeOccasion_not_built());
4142

42-
@Getter
4343
private final String desc;
4444

4545
NoticeOccasionEnum(String desc) {

src/main/java/io/jenkins/plugins/enums/SecurityPolicyEnum.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
*
1010
* @author liuwei
1111
*/
12+
@Getter
1213
@ToString
1314
public enum SecurityPolicyEnum {
1415

@@ -18,7 +19,7 @@ public enum SecurityPolicyEnum {
1819
/** 加签 */
1920
SECRET(Messages.SecurityPolicyType_secret());
2021

21-
@Getter private final String desc;
22+
private final String desc;
2223

2324
SecurityPolicyEnum(String desc) {
2425
this.desc = desc;

src/main/java/io/jenkins/plugins/model/ButtonModel.java

-3
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,9 @@
33
import hudson.Extension;
44
import hudson.model.AbstractDescribableImpl;
55
import hudson.model.Descriptor;
6-
import lombok.AllArgsConstructor;
76
import lombok.Data;
87
import lombok.EqualsAndHashCode;
9-
import lombok.NoArgsConstructor;
108
import org.kohsuke.stapler.DataBoundConstructor;
11-
import org.kohsuke.stapler.DataBoundSetter;
129

1310
/**
1411
* @author liuwei

src/main/java/io/jenkins/plugins/model/RobotConfigModel.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import io.jenkins.plugins.DingTalkRobotConfig;
44
import io.jenkins.plugins.DingTalkSecurityPolicyConfig;
55
import io.jenkins.plugins.enums.SecurityPolicyEnum;
6-
import java.io.UnsupportedEncodingException;
6+
77
import java.net.URLEncoder;
88
import java.nio.charset.StandardCharsets;
99
import java.security.InvalidKeyException;
@@ -69,7 +69,7 @@ public static RobotConfigModel of(DingTalkRobotConfig robotConfig) {
6969
meta.setSign(config.getValue());
7070
break;
7171
default:
72-
log.error("对应的安全策略不存在:" + type);
72+
log.error("对应的安全策略不存在:{}", type);
7373
}
7474
});
7575
return meta;
@@ -89,9 +89,9 @@ private static String createSign(long timestamp, String secret) {
8989
byte[] signData = mac.doFinal(seed.getBytes(StandardCharsets.UTF_8));
9090
result =
9191
URLEncoder.encode(
92-
new String(Base64.encodeBase64(signData), StandardCharsets.UTF_8.name()),
93-
StandardCharsets.UTF_8.name());
94-
} catch (NoSuchAlgorithmException | UnsupportedEncodingException | InvalidKeyException e) {
92+
new String(Base64.encodeBase64(signData), StandardCharsets.UTF_8),
93+
StandardCharsets.UTF_8);
94+
} catch (NoSuchAlgorithmException | InvalidKeyException e) {
9595
log.error("钉钉插件设置签名失败:", e);
9696
}
9797
return result;

src/main/java/io/jenkins/plugins/sdk/HttpRequest.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,8 @@ private static HttpURLConnection getConnection(
106106
} else {
107107
conn = (HttpURLConnection) url.openConnection(proxy);
108108
}
109-
if (conn instanceof HttpsURLConnection) {
110-
HttpsURLConnection connHttps = (HttpsURLConnection) conn;
111-
if (IGNORE_SSL_CHECK) {
109+
if (conn instanceof HttpsURLConnection connHttps) {
110+
if (IGNORE_SSL_CHECK) {
112111
try {
113112
SSLContext ctx = SSLContext.getInstance("TLS");
114113
ctx.init(null, new TrustManager[]{new TrustAllTrustManager()}, new SecureRandom());

src/main/java/io/jenkins/plugins/service/DingTalkService.java

+6-12
Original file line numberDiff line numberDiff line change
@@ -68,17 +68,11 @@ public String send(String robotId, MessageModel msg) {
6868
if (type == null) {
6969
return "消息类型【type】不能为空";
7070
}
71-
switch (type) {
72-
case TEXT:
73-
return sender.sendText(msg);
74-
case LINK:
75-
return sender.sendLink(msg);
76-
case MARKDOWN:
77-
return sender.sendMarkdown(msg);
78-
case ACTION_CARD:
79-
return sender.sendActionCard(msg);
80-
default:
81-
return String.format("错误的消息类型:%s", type.name());
82-
}
71+
return switch (type) {
72+
case TEXT -> sender.sendText(msg);
73+
case LINK -> sender.sendLink(msg);
74+
case MARKDOWN -> sender.sendMarkdown(msg);
75+
case ACTION_CARD -> sender.sendActionCard(msg);
76+
};
8377
}
8478
}

src/main/java/io/jenkins/plugins/tools/JavaFxColor.java

+13-18
Original file line numberDiff line numberDiff line change
@@ -145,22 +145,17 @@ private static float parseComponent(String color, int off, int end, int type) {
145145
float c = ((type == PARSE_COMPONENT)
146146
? Integer.parseInt(color)
147147
: Float.parseFloat(color));
148-
switch (type) {
149-
case PARSE_ALPHA:
150-
return (c < 0.0f) ? 0.0f : (Math.min(c, 1.0f));
151-
case PARSE_PERCENT:
152-
return (c <= 0.0f) ? 0.0f : ((c >= 100.0f) ? 1.0f : (c / 100.0f));
153-
case PARSE_COMPONENT:
154-
return (c <= 0.0f) ? 0.0f : ((c >= 255.0f) ? 1.0f : (c / 255.0f));
155-
case PARSE_ANGLE:
156-
return ((c < 0.0f)
157-
? ((c % 360.0f) + 360.0f)
158-
: ((c > 360.0f)
159-
? (c % 360.0f)
160-
: c));
161-
}
162-
163-
throw new IllegalArgumentException("Invalid color specification");
148+
return switch (type) {
149+
case PARSE_ALPHA -> (c < 0.0f) ? 0.0f : (Math.min(c, 1.0f));
150+
case PARSE_PERCENT -> (c <= 0.0f) ? 0.0f : ((c >= 100.0f) ? 1.0f : (c / 100.0f));
151+
case PARSE_COMPONENT -> (c <= 0.0f) ? 0.0f : ((c >= 255.0f) ? 1.0f : (c / 255.0f));
152+
case PARSE_ANGLE -> ((c < 0.0f)
153+
? ((c % 360.0f) + 360.0f)
154+
: ((c > 360.0f)
155+
? (c % 360.0f)
156+
: c));
157+
default -> throw new IllegalArgumentException("Invalid color specification");
158+
};
164159
}
165160

166161
private static Color parseHSLColor(String color, int hoff,
@@ -287,11 +282,11 @@ private static float[] hsb2Rgb(float hue, float saturation, float brightness) {
287282
private static float[] rgb2Hsb(float r, float g, float b) {
288283
float hue, saturation, brightness;
289284
float[] hsbvals = new float[3];
290-
float cmax = (r > g) ? r : g;
285+
float cmax = Math.max(r, g);
291286
if (b > cmax) {
292287
cmax = b;
293288
}
294-
float cmin = (r < g) ? r : g;
289+
float cmin = Math.min(r, g);
295290
if (b < cmin) {
296291
cmin = b;
297292
}

0 commit comments

Comments
 (0)