From b6d94a3b05dbe47e21a4ff9f9f43a5d0c7359dfb Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Thu, 13 Jun 2024 10:56:38 -0700 Subject: [PATCH] Miscellaneous code cleanup (#562) --- .../java/org/kohsuke/stapler/AttributeKey.java | 2 +- .../stapler/BytecodeReadingParanamer.java | 7 +++---- .../kohsuke/stapler/CachingScriptLoader.java | 2 +- .../java/org/kohsuke/stapler/RequestImpl.java | 4 ++-- .../java/org/kohsuke/stapler/export/Model.java | 18 +++++++----------- .../stapler/framework/io/LargeText.java | 12 +----------- .../framework/io/WriterOutputStream.java | 13 +------------ .../stapler/framework/io/LargeTextTest.java | 3 +-- .../jelly/groovy/GroovierJellyScript.java | 2 +- .../groovy/GroovyClassLoaderTearOffTest.java | 12 ++++++------ 10 files changed, 24 insertions(+), 51 deletions(-) diff --git a/core/src/main/java/org/kohsuke/stapler/AttributeKey.java b/core/src/main/java/org/kohsuke/stapler/AttributeKey.java index cfef662ba3..427aaba55d 100644 --- a/core/src/main/java/org/kohsuke/stapler/AttributeKey.java +++ b/core/src/main/java/org/kohsuke/stapler/AttributeKey.java @@ -122,7 +122,7 @@ public void remove(HttpServletRequest req) { } private ServletContext getContext(HttpServletRequest req) { - return ((StaplerRequest) req).getServletContext(); + return req.getServletContext(); } }; } diff --git a/core/src/main/java/org/kohsuke/stapler/BytecodeReadingParanamer.java b/core/src/main/java/org/kohsuke/stapler/BytecodeReadingParanamer.java index 18a53e44cd..04ec8d05e5 100644 --- a/core/src/main/java/org/kohsuke/stapler/BytecodeReadingParanamer.java +++ b/core/src/main/java/org/kohsuke/stapler/BytecodeReadingParanamer.java @@ -183,7 +183,7 @@ private String correctTypeName(Type[] argumentTypes, int i) { braces = braces + "["; s = s.substring(0, s.length() - 2); } - if (!braces.equals("")) { + if (!braces.isEmpty()) { if (primitives.containsKey(s)) { s = braces + primitives.get(s); } else { @@ -1036,10 +1036,9 @@ private static Type getType(final char[] buf, final int off) { ++len; } if (buf[off + len] == 'L') { - ++len; - while (buf[off + len] != ';') { + do { ++len; - } + } while (buf[off + len] != ';'); } return new Type(ARRAY, buf, off, len + 1); // case 'L': diff --git a/core/src/main/java/org/kohsuke/stapler/CachingScriptLoader.java b/core/src/main/java/org/kohsuke/stapler/CachingScriptLoader.java index 8e779e33f2..77c5648649 100644 --- a/core/src/main/java/org/kohsuke/stapler/CachingScriptLoader.java +++ b/core/src/main/java/org/kohsuke/stapler/CachingScriptLoader.java @@ -52,7 +52,7 @@ public S findScript(String name) throws E { S s; if (sr == null) { // never before computed s = null; - } else if (!sr.isPresent()) { // cached as null + } else if (sr.isEmpty()) { // cached as null return null; } else { // cached as non-null; may or may not still have value s = sr.get().get(); diff --git a/core/src/main/java/org/kohsuke/stapler/RequestImpl.java b/core/src/main/java/org/kohsuke/stapler/RequestImpl.java index 4219707b09..557ac11bc5 100644 --- a/core/src/main/java/org/kohsuke/stapler/RequestImpl.java +++ b/core/src/main/java/org/kohsuke/stapler/RequestImpl.java @@ -607,7 +607,7 @@ public Object bindJSON(Type type, Class erasure, Object json) { @Override public void bindJSON(Object bean, JSONObject src) { try { - for (String key : (Set) src.keySet()) { + for (String key : src.keySet()) { TypePair type = getPropertyType(bean, key); if (type == null) { continue; @@ -992,7 +992,7 @@ private Object bindResolve(Object o, JSONObject src) { private T injectSetters(T r, JSONObject j, Collection exclusions) { // try to assign rest of the properties OUTER: - for (String key : (Set) j.keySet()) { + for (String key : j.keySet()) { if (!exclusions.contains(key)) { try { // try field injection first diff --git a/core/src/main/java/org/kohsuke/stapler/export/Model.java b/core/src/main/java/org/kohsuke/stapler/export/Model.java index 9c80603f00..76ad568535 100644 --- a/core/src/main/java/org/kohsuke/stapler/export/Model.java +++ b/core/src/main/java/org/kohsuke/stapler/export/Model.java @@ -27,6 +27,7 @@ import edu.umd.cs.findbugs.annotations.Nullable; import java.io.IOException; import java.io.InputStream; +import java.io.UncheckedIOException; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.ArrayList; @@ -177,18 +178,13 @@ public boolean test(@Nullable String name) { // load Properties p = new Properties(); - InputStream is = type.getClassLoader() - .getResourceAsStream(type.getName().replace('$', '/').replace('.', '/') + ".javadoc"); - if (is != null) { - try { - try { - p.load(is); - } finally { - is.close(); - } - } catch (IOException e) { - throw new RuntimeException("Unable to load javadoc for " + type, e); + try (InputStream is = type.getClassLoader() + .getResourceAsStream(type.getName().replace('$', '/').replace('.', '/') + ".javadoc")) { + if (is != null) { + p.load(is); } + } catch (IOException e) { + throw new UncheckedIOException("Unable to load javadoc for " + type, e); } javadoc = p; return javadoc; diff --git a/core/src/main/java/org/kohsuke/stapler/framework/io/LargeText.java b/core/src/main/java/org/kohsuke/stapler/framework/io/LargeText.java index 90fce5b6c9..2ef9083930 100644 --- a/core/src/main/java/org/kohsuke/stapler/framework/io/LargeText.java +++ b/core/src/main/java/org/kohsuke/stapler/framework/io/LargeText.java @@ -520,9 +520,7 @@ public static long getGzipStreamSize(File file) { if (!isGzipStream(file)) { return file.length(); } - RandomAccessFile raf = null; - try { - raf = new RandomAccessFile(file, "r"); + try (RandomAccessFile raf = new RandomAccessFile(file, "r")) { if (raf.length() <= 4) { raf.close(); return file.length(); @@ -535,14 +533,6 @@ public static long getGzipStreamSize(File file) { return (b1 << 24) + (b2 << 16) + (b3 << 8) + b4; } catch (IOException ex) { return file.length(); - } finally { - if (raf != null) { - try { - raf.close(); - } catch (IOException e) { - // ignore - } - } } } } 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 7f2eec46d1..7e34a4ac76 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 @@ -33,8 +33,6 @@ import java.nio.charset.CharsetDecoder; import java.nio.charset.CoderResult; import java.nio.charset.CodingErrorAction; -import java.nio.charset.StandardCharsets; -import java.nio.charset.UnsupportedCharsetException; /** * {@link OutputStream} that writes to {@link Writer} @@ -136,14 +134,5 @@ private void decode(boolean last) throws IOException { } } - private static final Charset DEFAULT_CHARSET = getDefaultCharset(); - - private static Charset getDefaultCharset() { - try { - String encoding = System.getProperty("file.encoding"); - return Charset.forName(encoding); - } catch (UnsupportedCharsetException e) { - return StandardCharsets.UTF_8; - } - } + private static final Charset DEFAULT_CHARSET = Charset.defaultCharset(); } diff --git a/core/src/test/java/org/kohsuke/stapler/framework/io/LargeTextTest.java b/core/src/test/java/org/kohsuke/stapler/framework/io/LargeTextTest.java index c74ec56aac..c3b9f85189 100644 --- a/core/src/test/java/org/kohsuke/stapler/framework/io/LargeTextTest.java +++ b/core/src/test/java/org/kohsuke/stapler/framework/io/LargeTextTest.java @@ -38,7 +38,6 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.Collections; -import org.apache.commons.io.output.NullOutputStream; import org.junit.Ignore; import org.junit.Test; import org.jvnet.hudson.test.Issue; @@ -86,7 +85,7 @@ public void writeLogToWithLargeFile() throws Exception { LargeText t = new LargeText(path.toFile(), StandardCharsets.US_ASCII, true); - try (OutputStream os = NullOutputStream.NULL_OUTPUT_STREAM) { + try (OutputStream os = OutputStream.nullOutputStream()) { long writenCount = t.writeLogTo(0, os); assertEquals(size, writenCount); diff --git a/groovy/src/main/java/org/kohsuke/stapler/jelly/groovy/GroovierJellyScript.java b/groovy/src/main/java/org/kohsuke/stapler/jelly/groovy/GroovierJellyScript.java index 96b2989a09..1b533b308d 100644 --- a/groovy/src/main/java/org/kohsuke/stapler/jelly/groovy/GroovierJellyScript.java +++ b/groovy/src/main/java/org/kohsuke/stapler/jelly/groovy/GroovierJellyScript.java @@ -85,7 +85,7 @@ public void run(JellyBuilder builder) { .filter(method -> method.getName().equals("gettext")) .map(CachedMethod::find) .map(method -> new AliasMetaMethod(method.getDeclaringClass(), method.getCachedMethod(), "_")) - .forEach(method -> metaClass.addMetaMethod(method)); + .forEach(metaClass::addMetaMethod); metaClass.initialize(); gcs.setMetaClass(metaClass); diff --git a/groovy/src/test/java/org/kohsuke/stapler/jelly/groovy/GroovyClassLoaderTearOffTest.java b/groovy/src/test/java/org/kohsuke/stapler/jelly/groovy/GroovyClassLoaderTearOffTest.java index a30c5dfeff..86d3d5640a 100644 --- a/groovy/src/test/java/org/kohsuke/stapler/jelly/groovy/GroovyClassLoaderTearOffTest.java +++ b/groovy/src/test/java/org/kohsuke/stapler/jelly/groovy/GroovyClassLoaderTearOffTest.java @@ -28,7 +28,7 @@ public void testFoo() throws IOException, JellyTagException { MetaClassLoader mcl = webApp.getMetaClass(Foo.class).classLoader; GroovyClassLoaderTearOff t = mcl.loadTearOff(GroovyClassLoaderTearOff.class); - Files.write(tmp, "context.setVariable('x',1)".getBytes(StandardCharsets.UTF_8)); + Files.writeString(tmp, "context.setVariable('x',1)", StandardCharsets.UTF_8); JellyContext context = new JellyContext(); XMLOutput w = XMLOutput.createXMLOutput(System.out); @@ -36,7 +36,7 @@ public void testFoo() throws IOException, JellyTagException { assertEquals(1, context.getVariable("x")); // reload different content in the same URL, make sure new class gets loaded - Files.write(tmp, "context.setVariable('x',2)".getBytes(StandardCharsets.UTF_8)); + Files.writeString(tmp, "context.setVariable('x',2)", StandardCharsets.UTF_8); t.parse(tmp.toUri().toURL()).run(context, w); assertEquals(2, context.getVariable("x")); } finally { @@ -51,7 +51,7 @@ public void testGettext() throws Exception { MetaClassLoader mcl = webApp.getMetaClass(Foo.class).classLoader; GroovyClassLoaderTearOff t = mcl.loadTearOff(GroovyClassLoaderTearOff.class); - Files.write(tmp, "output.write(_('localizable'))".getBytes(StandardCharsets.UTF_8)); + Files.writeString(tmp, "output.write(_('localizable'))", StandardCharsets.UTF_8); Files.writeString( tmp.resolveSibling(tmp.getFileName().toString().replaceFirst("[.]groovy$", ".properties")), "localizable=Localizable", @@ -78,10 +78,10 @@ public void testTimeZone() throws IOException, JellyTagException { MetaClassLoader mcl = webApp.getMetaClass(Foo.class).classLoader; GroovyClassLoaderTearOff t = mcl.loadTearOff(GroovyClassLoaderTearOff.class); - Files.write( + Files.writeString( tmp, - "def tz = java.util.TimeZone.getDefault()\ncontext.setVariable('x', (tz.rawOffset + tz.DSTSavings) / 3600000)" - .getBytes(StandardCharsets.UTF_8)); + "def tz = java.util.TimeZone.getDefault()\ncontext.setVariable('x', (tz.rawOffset + tz.DSTSavings) / 3600000)", + StandardCharsets.UTF_8); JellyContext context = new JellyContext(); ByteArrayOutputStream baos = new ByteArrayOutputStream();