From 791aeeeeaa3c7546782f211f4af1ff0d7e8eda84 Mon Sep 17 00:00:00 2001 From: Ruben Dijkstra Date: Mon, 24 Aug 2015 17:19:40 +0200 Subject: [PATCH] Add support for multi-value SuppressWarnings --- .gitignore | 1 + .../java/com/mysema/codegen/CodeWriter.java | 2 + .../java/com/mysema/codegen/JavaWriter.java | 5 +++ .../mysema/codegen/MultiSuppressWarnings.java | 40 +++++++++++++++++++ .../java/com/mysema/codegen/ScalaWriter.java | 5 +++ .../com/mysema/codegen/JavaWriterTest.java | 10 ++++- src/test/resources/testSuppressWarnings2 | 2 + 7 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/mysema/codegen/MultiSuppressWarnings.java create mode 100644 src/test/resources/testSuppressWarnings2 diff --git a/.gitignore b/.gitignore index 6006a3da3..4846e6dfb 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ test-output /.metadata .cache derby.log +nb-configuration.xml diff --git a/src/main/java/com/mysema/codegen/CodeWriter.java b/src/main/java/com/mysema/codegen/CodeWriter.java index 56f462667..d06ba71e3 100644 --- a/src/main/java/com/mysema/codegen/CodeWriter.java +++ b/src/main/java/com/mysema/codegen/CodeWriter.java @@ -109,4 +109,6 @@ public interface CodeWriter extends Appendable { CodeWriter suppressWarnings(String type) throws IOException; + CodeWriter suppressWarnings(String... types) throws IOException; + } \ No newline at end of file diff --git a/src/main/java/com/mysema/codegen/JavaWriter.java b/src/main/java/com/mysema/codegen/JavaWriter.java index 19561defc..1dbdb4ad0 100644 --- a/src/main/java/com/mysema/codegen/JavaWriter.java +++ b/src/main/java/com/mysema/codegen/JavaWriter.java @@ -481,6 +481,11 @@ public final class JavaWriter extends AbstractCodeWriter { return line("@SuppressWarnings(\"" + type + "\")"); } + @Override + public CodeWriter suppressWarnings(String... types) throws IOException { + return annotation(new MultiSuppressWarnings(types)); + } + private Parameter[] transform(Collection parameters, Function transformer) { Parameter[] rv = new Parameter[parameters.size()]; diff --git a/src/main/java/com/mysema/codegen/MultiSuppressWarnings.java b/src/main/java/com/mysema/codegen/MultiSuppressWarnings.java new file mode 100644 index 000000000..046ea317e --- /dev/null +++ b/src/main/java/com/mysema/codegen/MultiSuppressWarnings.java @@ -0,0 +1,40 @@ +/* + * Copyright 2015, The Querydsl Team (http://www.querydsl.com/team) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.mysema.codegen; + +import java.lang.annotation.Annotation; +import java.util.Arrays; + +@SuppressWarnings("AnnotationAsSuperInterface") // Internal helper class +class MultiSuppressWarnings implements SuppressWarnings { + + private final String[] values; + + public MultiSuppressWarnings(String... values) { + this.values = Arrays.copyOf(values, values.length); + } + + @Override + @SuppressWarnings("ReturnOfCollectionOrArrayField") + public String[] value() { + return values; + } + + @Override + public Class annotationType() { + return SuppressWarnings.class; + } +} diff --git a/src/main/java/com/mysema/codegen/ScalaWriter.java b/src/main/java/com/mysema/codegen/ScalaWriter.java index fd6c56050..8725270d8 100644 --- a/src/main/java/com/mysema/codegen/ScalaWriter.java +++ b/src/main/java/com/mysema/codegen/ScalaWriter.java @@ -579,6 +579,11 @@ public class ScalaWriter extends AbstractCodeWriter { return line("@SuppressWarnings(\"" + type + "\")"); } + @Override + public CodeWriter suppressWarnings(String... types) throws IOException { + return annotation(new MultiSuppressWarnings(types)); + } + private Parameter[] transform(Collection parameters, Function transformer) { Parameter[] rv = new Parameter[parameters.size()]; diff --git a/src/test/java/com/mysema/codegen/JavaWriterTest.java b/src/test/java/com/mysema/codegen/JavaWriterTest.java index 29872cb43..1c0667699 100644 --- a/src/test/java/com/mysema/codegen/JavaWriterTest.java +++ b/src/test/java/com/mysema/codegen/JavaWriterTest.java @@ -45,7 +45,7 @@ public class JavaWriterTest { private static void match(String resource, String text) throws IOException { // TODO : try to compile ? - String expected = Resources.toString(JavaWriterTest.class.getResource(resource), Charsets.UTF_8) + String expected = Resources.toString(JavaWriterTest.class.getResource(resource), Charsets.UTF_8) .replace("\r\n", "\n").trim(); String actual = text.trim(); assertEquals(expected, actual); @@ -335,4 +335,12 @@ public class JavaWriterTest { match("/testSuppressWarnings", w.toString()); } + + @Test + public void SuppressWarnings2() throws IOException { + writer.suppressWarnings("all", "unused"); + writer.privateField(Types.STRING, "test"); + + match("/testSuppressWarnings2", w.toString()); + } } diff --git a/src/test/resources/testSuppressWarnings2 b/src/test/resources/testSuppressWarnings2 new file mode 100644 index 000000000..cd9e88ce0 --- /dev/null +++ b/src/test/resources/testSuppressWarnings2 @@ -0,0 +1,2 @@ +@SuppressWarnings({"all", "unused"}) +private String test;