diff --git a/core/src/main/java/hudson/console/AnnotatedLargeText.java b/core/src/main/java/hudson/console/AnnotatedLargeText.java index edfab781f2..6acbdeff6e 100644 --- a/core/src/main/java/hudson/console/AnnotatedLargeText.java +++ b/core/src/main/java/hudson/console/AnnotatedLargeText.java @@ -113,7 +113,7 @@ public class AnnotatedLargeText extends LargeText { rsp.setContentType(isHtml() ? "text/html;charset=UTF-8" : "text/plain;charset=UTF-8"); } - private ConsoleAnnotator createAnnotator(StaplerRequest req) throws IOException { + private ConsoleAnnotator createAnnotator(StaplerRequest req) throws IOException { try { String base64 = req!=null ? req.getHeader("X-ConsoleAnnotator") : null; if (base64!=null) { @@ -135,7 +135,7 @@ public class AnnotatedLargeText extends LargeText { throw new IOException(e); } // start from scratch - return ConsoleAnnotator.initial(context==null ? null : context.getClass()); + return ConsoleAnnotator.initial(context); } @Override @@ -164,7 +164,7 @@ public class AnnotatedLargeText extends LargeText { } public long writeHtmlTo(long start, Writer w) throws IOException { - ConsoleAnnotationOutputStream caw = new ConsoleAnnotationOutputStream( + ConsoleAnnotationOutputStream caw = new ConsoleAnnotationOutputStream<>( w, createAnnotator(Stapler.getCurrentRequest()), context, charset); long r = super.writeLogTo(start,caw); diff --git a/core/src/main/java/hudson/console/ConsoleAnnotationOutputStream.java b/core/src/main/java/hudson/console/ConsoleAnnotationOutputStream.java index 919e3af011..f3a22c875c 100644 --- a/core/src/main/java/hudson/console/ConsoleAnnotationOutputStream.java +++ b/core/src/main/java/hudson/console/ConsoleAnnotationOutputStream.java @@ -72,7 +72,7 @@ public class ConsoleAnnotationOutputStream extends LineTransformationOutputSt this.lineOut = new WriterOutputStream(line,charset); } - public ConsoleAnnotator getConsoleAnnotator() { + public ConsoleAnnotator getConsoleAnnotator() { return ann; } @@ -80,6 +80,8 @@ public class ConsoleAnnotationOutputStream extends LineTransformationOutputSt * Called after we read the whole line of plain text, which is stored in {@link #buf}. * This method performs annotations and send the result to {@link #out}. */ + @SuppressWarnings({"unchecked", "rawtypes"}) // appears to be unsound + @Override protected void eol(byte[] in, int sz) throws IOException { line.reset(); final StringBuffer strBuf = line.getStringBuffer(); @@ -109,9 +111,10 @@ public class ConsoleAnnotationOutputStream extends LineTransformationOutputSt final ConsoleNote a = ConsoleNote.readFrom(new DataInputStream(b)); if (a!=null) { if (annotators==null) - annotators = new ArrayList>(); + annotators = new ArrayList<>(); annotators.add(new ConsoleAnnotator() { - public ConsoleAnnotator annotate(T context, MarkupText text) { + @Override + public ConsoleAnnotator annotate(T context, MarkupText text) { return a.annotate(context,text,charPos); } }); diff --git a/core/src/main/java/hudson/console/ConsoleAnnotator.java b/core/src/main/java/hudson/console/ConsoleAnnotator.java index 475badceb6..9701eb302f 100644 --- a/core/src/main/java/hudson/console/ConsoleAnnotator.java +++ b/core/src/main/java/hudson/console/ConsoleAnnotator.java @@ -82,22 +82,25 @@ public abstract class ConsoleAnnotator implements Serializable { * To indicate that you are not interested in the following lines, return {@code null}. */ @CheckForNull - public abstract ConsoleAnnotator annotate(@Nonnull T context, @Nonnull MarkupText text ); + public abstract ConsoleAnnotator annotate(@Nonnull T context, @Nonnull MarkupText text ); /** * Cast operation that restricts T. */ + @SuppressWarnings("unchecked") public static ConsoleAnnotator cast(ConsoleAnnotator a) { return (ConsoleAnnotator)a; } + @SuppressWarnings({"unchecked", "rawtypes"}) // unclear to jglick what is going on here private static final class ConsoleAnnotatorAggregator extends ConsoleAnnotator { List> list; ConsoleAnnotatorAggregator(Collection list) { - this.list = new ArrayList>(list); + this.list = new ArrayList<>(list); } + @Override public ConsoleAnnotator annotate(T context, MarkupText text) { ListIterator> itr = list.listIterator(); while (itr.hasNext()) { @@ -126,7 +129,7 @@ public abstract class ConsoleAnnotator implements Serializable { case 1: return cast(all.iterator().next()); // just one } - return new ConsoleAnnotatorAggregator(all); + return new ConsoleAnnotatorAggregator<>(all); } /** @@ -140,8 +143,9 @@ public abstract class ConsoleAnnotator implements Serializable { /** * List all the console annotators that can work for the specified context type. */ + @SuppressWarnings({"unchecked", "rawtypes"}) // reflective public static List> _for(T context) { - List> r = new ArrayList>(); + List> r = new ArrayList<>(); for (ConsoleAnnotatorFactory f : ConsoleAnnotatorFactory.all()) { if (f.type().isInstance(context)) { ConsoleAnnotator ca = f.newInstance(context); diff --git a/core/src/main/java/hudson/console/ConsoleAnnotatorFactory.java b/core/src/main/java/hudson/console/ConsoleAnnotatorFactory.java index f9feac4a95..409ee59c67 100644 --- a/core/src/main/java/hudson/console/ConsoleAnnotatorFactory.java +++ b/core/src/main/java/hudson/console/ConsoleAnnotatorFactory.java @@ -80,13 +80,13 @@ public abstract class ConsoleAnnotatorFactory implements ExtensionPoint { * @return * null if this factory is not going to participate in the annotation of this console. */ - public abstract ConsoleAnnotator newInstance(T context); + public abstract ConsoleAnnotator newInstance(T context); /** * For which context type does this annotator work? */ - public Class type() { - Type type = Types.getBaseClass(getClass(), ConsoleAnnotator.class); + public Class type() { + Type type = Types.getBaseClass(getClass(), ConsoleAnnotatorFactory.class); if (type instanceof ParameterizedType) return Types.erasure(Types.getTypeArgument(type,0)); else @@ -105,7 +105,7 @@ public abstract class ConsoleAnnotatorFactory implements ExtensionPoint { } private URL getResource(String fileName) { - Class c = getClass(); + Class c = getClass(); return c.getClassLoader().getResource(c.getName().replace('.','/').replace('$','/')+ fileName); } @@ -125,6 +125,7 @@ public abstract class ConsoleAnnotatorFactory implements ExtensionPoint { /** * All the registered instances. */ + @SuppressWarnings("rawtypes") public static ExtensionList all() { return ExtensionList.lookup(ConsoleAnnotatorFactory.class); } diff --git a/test/src/test/java/hudson/console/ConsoleAnnotatorTest.java b/test/src/test/java/hudson/console/ConsoleAnnotatorTest.java index a25401eabd..18e46dda4b 100644 --- a/test/src/test/java/hudson/console/ConsoleAnnotatorTest.java +++ b/test/src/test/java/hudson/console/ConsoleAnnotatorTest.java @@ -81,16 +81,17 @@ public class ConsoleAnnotatorTest { * Only annotates the first occurrence of "ooo". */ @TestExtension("completedStatelessLogAnnotation") - public static final ConsoleAnnotatorFactory DEMO_ANNOTATOR = new ConsoleAnnotatorFactory() { - public ConsoleAnnotator newInstance(Object context) { + public static final class DemoAnnotatorFactory extends ConsoleAnnotatorFactory { + @Override + public ConsoleAnnotator newInstance(FreeStyleBuild context) { return new DemoAnnotator(); } - }; + } - public static class DemoAnnotator extends ConsoleAnnotator { + public static class DemoAnnotator extends ConsoleAnnotator { private static final String ANNOTATE_TEXT = "ooo" + System.getProperty("line.separator"); @Override - public ConsoleAnnotator annotate(Object build, MarkupText text) { + public ConsoleAnnotator annotate(FreeStyleBuild build, MarkupText text) { if (text.getText().equals(ANNOTATE_TEXT)) { text.addMarkup(0,3,"",""); return null;