From 18ddae351b554b64713022131cf8b280e6230cba Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Tue, 4 Jan 2022 15:24:46 -0800 Subject: [PATCH 1/2] Begin migration to Jakarta Annotations --- core/pom.xml | 11 ++++++++++- .../java/org/kohsuke/stapler/DataBoundSetter.java | 2 +- core/src/main/java/org/kohsuke/stapler/MetaClass.java | 4 ++-- .../java/org/kohsuke/stapler/DataBindingTest.java | 2 +- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index 63a2f8fd20..fd47924670 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -49,10 +49,19 @@ commons-io 2.11.0 + + + javax.annotation + javax.annotation-api + 1.3.2 + jakarta.annotation jakarta.annotation-api - 1.3.5 + 2.0.0 javax.servlet diff --git a/core/src/main/java/org/kohsuke/stapler/DataBoundSetter.java b/core/src/main/java/org/kohsuke/stapler/DataBoundSetter.java index 0fe5be4268..c84dfe5fa7 100644 --- a/core/src/main/java/org/kohsuke/stapler/DataBoundSetter.java +++ b/core/src/main/java/org/kohsuke/stapler/DataBoundSetter.java @@ -1,8 +1,8 @@ package org.kohsuke.stapler; +import jakarta.annotation.PostConstruct; import net.sf.json.JSONObject; -import javax.annotation.PostConstruct; import java.beans.Introspector; import java.lang.annotation.Documented; import java.lang.annotation.Retention; diff --git a/core/src/main/java/org/kohsuke/stapler/MetaClass.java b/core/src/main/java/org/kohsuke/stapler/MetaClass.java index d18d70910c..58b8596d9d 100644 --- a/core/src/main/java/org/kohsuke/stapler/MetaClass.java +++ b/core/src/main/java/org/kohsuke/stapler/MetaClass.java @@ -24,6 +24,7 @@ package org.kohsuke.stapler; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import jakarta.annotation.PostConstruct; import net.sf.json.JSONArray; import org.apache.commons.io.IOUtils; import org.kohsuke.stapler.bind.JavaScriptMethod; @@ -31,7 +32,6 @@ import org.kohsuke.stapler.lang.Klass; import org.kohsuke.stapler.lang.MethodRef; -import javax.annotation.PostConstruct; import javax.servlet.ServletException; import java.io.IOException; import java.lang.reflect.InvocationTargetException; @@ -601,7 +601,7 @@ public SingleLinkedList getPostConstructMethods() { SingleLinkedList l = baseClass==null ? SingleLinkedList.empty() : baseClass.getPostConstructMethods(); for (MethodRef mr : klass.getDeclaredMethods()) { - if (mr.hasAnnotation(PostConstruct.class)) { + if (mr.hasAnnotation(PostConstruct.class) || mr.hasAnnotation(javax.annotation.PostConstruct.class)) { l = l.grow(mr); } } diff --git a/core/src/test/java/org/kohsuke/stapler/DataBindingTest.java b/core/src/test/java/org/kohsuke/stapler/DataBindingTest.java index 3d8ef4b1be..3b3093f16c 100644 --- a/core/src/test/java/org/kohsuke/stapler/DataBindingTest.java +++ b/core/src/test/java/org/kohsuke/stapler/DataBindingTest.java @@ -1,10 +1,10 @@ package org.kohsuke.stapler; +import jakarta.annotation.PostConstruct; import junit.framework.TestCase; import net.sf.json.JSONArray; import net.sf.json.JSONObject; -import javax.annotation.PostConstruct; import java.lang.reflect.Type; import java.net.Proxy; import java.util.ArrayList; From 05eaa4644eb1f3d7e681991aa2c00a8d6a8e0f3f Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Tue, 4 Jan 2022 19:51:16 -0800 Subject: [PATCH 2/2] Fix ByteBuffer NoSuchMethodError errors --- .../kohsuke/stapler/framework/io/WriterOutputStream.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/kohsuke/stapler/framework/io/WriterOutputStream.java b/core/src/main/java/org/kohsuke/stapler/framework/io/WriterOutputStream.java index 66e2593906..09d4bedc18 100644 --- a/core/src/main/java/org/kohsuke/stapler/framework/io/WriterOutputStream.java +++ b/core/src/main/java/org/kohsuke/stapler/framework/io/WriterOutputStream.java @@ -87,7 +87,8 @@ public void flush() throws IOException { private void flushOutput() throws IOException { writer.write(out.array(),0,out.position()); - out.clear(); + // Downcasting to Buffer is needed to avoid NoSuchMethodError errors because Java 11 uses covariance in the ByteBuffer return type. + ((Buffer) out).clear(); } @Override @@ -96,7 +97,8 @@ public void close() throws IOException { flushOutput(); writer.close(); - buf.rewind(); + // Downcasting to Buffer is needed to avoid NoSuchMethodError errors because Java 11 uses covariance in the ByteBuffer return type. + ((Buffer) buf).rewind(); } /** @@ -111,7 +113,8 @@ public void close() throws IOException { * if true, tell the decoder that all the input bytes are ready. */ private void decode(boolean last) throws IOException { - buf.flip(); + // Downcasting to Buffer is needed to avoid NoSuchMethodError errors because Java 11 uses covariance in the ByteBuffer return type. + ((Buffer) buf).flip(); while(true) { CoderResult r = decoder.decode(buf, out, last); if(r==CoderResult.OVERFLOW) {