From c93bfa88c30940d4f9bda88cac322ebbb83703a6 Mon Sep 17 00:00:00 2001 From: Shaishav Gandhi Date: Wed, 3 Oct 2018 19:57:36 -0700 Subject: Check parameter Modifiers (#678) * Check parameter modifiers for non final modifiers Signed-off-by: shaishavgandhi05 * Add extra line Signed-off-by: shaishavgandhi05 * Fix formatting Signed-off-by: shaishavgandhi05 --- src/main/java/com/squareup/javapoet/ParameterSpec.java | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/main/java/com/squareup/javapoet/ParameterSpec.java') diff --git a/src/main/java/com/squareup/javapoet/ParameterSpec.java b/src/main/java/com/squareup/javapoet/ParameterSpec.java index 63da3f2..e30cb0f 100644 --- a/src/main/java/com/squareup/javapoet/ParameterSpec.java +++ b/src/main/java/com/squareup/javapoet/ParameterSpec.java @@ -160,6 +160,9 @@ public final class ParameterSpec { public Builder addModifiers(Iterable modifiers) { checkNotNull(modifiers, "modifiers == null"); for (Modifier modifier : modifiers) { + if (!modifier.equals(Modifier.FINAL)) { + throw new IllegalStateException("unexpected parameter modifier: " + modifier); + } this.modifiers.add(modifier); } return this; -- cgit v1.2.3 From ea7a02ee88f8a3aa9afd3a9268390f4f9fee4b59 Mon Sep 17 00:00:00 2001 From: Shaishav Gandhi Date: Wed, 3 Oct 2018 19:59:30 -0700 Subject: Add Javadoc to ParameterSpec (#676) * Add Javadoc to ParameterSpec Signed-off-by: shaishavgandhi05 * Move emission to same CodeBlock Signed-off-by: shaishavgandhi05 * Remove eager javadoc addition and fallback to adding doc when emitting Signed-off-by: shaishavgandhi05 * Fix formatting Signed-off-by: shaishavgandhi05 * Add new line before emitting parameter javadoc Signed-off-by: shaishavgandhi05 * Emit new line before @param only if method javadoc is present Signed-off-by: shaishavgandhi05 --- src/main/java/com/squareup/javapoet/ParameterSpec.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/main/java/com/squareup/javapoet/ParameterSpec.java') diff --git a/src/main/java/com/squareup/javapoet/ParameterSpec.java b/src/main/java/com/squareup/javapoet/ParameterSpec.java index e30cb0f..e98b99e 100644 --- a/src/main/java/com/squareup/javapoet/ParameterSpec.java +++ b/src/main/java/com/squareup/javapoet/ParameterSpec.java @@ -35,12 +35,14 @@ public final class ParameterSpec { public final List annotations; public final Set modifiers; public final TypeName type; + public final CodeBlock javadoc; private ParameterSpec(Builder builder) { this.name = checkNotNull(builder.name, "name == null"); this.annotations = Util.immutableList(builder.annotations); this.modifiers = Util.immutableSet(builder.modifiers); this.type = checkNotNull(builder.type, "type == null"); + this.javadoc = builder.javadoc.build(); } public boolean hasModifier(Modifier modifier) { @@ -121,6 +123,7 @@ public final class ParameterSpec { public static final class Builder { private final TypeName type; private final String name; + private final CodeBlock.Builder javadoc = CodeBlock.builder(); private final List annotations = new ArrayList<>(); private final List modifiers = new ArrayList<>(); @@ -130,6 +133,16 @@ public final class ParameterSpec { this.name = name; } + public Builder addJavadoc(String format, Object... args) { + javadoc.add(format, args); + return this; + } + + public Builder addJavadoc(CodeBlock block) { + javadoc.add(block); + return this; + } + public Builder addAnnotations(Iterable annotationSpecs) { checkArgument(annotationSpecs != null, "annotationSpecs == null"); for (AnnotationSpec annotationSpec : annotationSpecs) { -- cgit v1.2.3 From a0eadbbf0e7b70f0fbbc66043536e4328c3808fd Mon Sep 17 00:00:00 2001 From: Shaishav Gandhi Date: Sat, 21 Dec 2019 05:39:33 -0800 Subject: Add checks to ParameterSpec with VariableElement + copy over annotations (#681) * Add checks to ParameterSpec with VariableElement + copy over annotations Signed-off-by: shaishavgandhi05 * Add test for variable element Signed-off-by: shaishavgandhi05 * Extract util methods into TestUtil * Fix formatting * Make findFirst more generic Co-authored-by: Egor Andreevich --- src/main/java/com/squareup/javapoet/ParameterSpec.java | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/main/java/com/squareup/javapoet/ParameterSpec.java') diff --git a/src/main/java/com/squareup/javapoet/ParameterSpec.java b/src/main/java/com/squareup/javapoet/ParameterSpec.java index e98b99e..386ed1a 100644 --- a/src/main/java/com/squareup/javapoet/ParameterSpec.java +++ b/src/main/java/com/squareup/javapoet/ParameterSpec.java @@ -21,7 +21,9 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; import javax.lang.model.SourceVersion; +import javax.lang.model.element.ElementKind; import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.Modifier; import javax.lang.model.element.VariableElement; @@ -83,10 +85,19 @@ public final class ParameterSpec { } public static ParameterSpec get(VariableElement element) { + checkArgument(element.getKind().equals(ElementKind.PARAMETER), "element is not a parameter"); + + // Copy over any annotations from element. + List annotations = element.getAnnotationMirrors() + .stream() + .map((mirror) -> AnnotationSpec.get(mirror)) + .collect(Collectors.toList()); + TypeName type = TypeName.get(element.asType()); String name = element.getSimpleName().toString(); return ParameterSpec.builder(type, name) .addModifiers(element.getModifiers()) + .addAnnotations(annotations) .build(); } -- cgit v1.2.3 From 4272265a319a562bceaa537fc1b9b6b40236a881 Mon Sep 17 00:00:00 2001 From: Zac Sweers Date: Wed, 1 Jan 2020 08:37:31 -0500 Subject: Mutable builder list fields (#650) * Make modifiers and annotations in FieldSpec public * Make AnnotationSpec members public * Make JavaFile staticImports public * Make modifiers and annotations in parameterspec public * Make methodspec modifiers, params, typevars, and annotations public * Make typespec builder lists public * Move TypeSpec.Builder validations to build() where appropriate * Move AnnotationSpec.Builder validations to build() where appropriate * Fix line length style --- src/main/java/com/squareup/javapoet/ParameterSpec.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/main/java/com/squareup/javapoet/ParameterSpec.java') diff --git a/src/main/java/com/squareup/javapoet/ParameterSpec.java b/src/main/java/com/squareup/javapoet/ParameterSpec.java index 386ed1a..b8f3129 100644 --- a/src/main/java/com/squareup/javapoet/ParameterSpec.java +++ b/src/main/java/com/squareup/javapoet/ParameterSpec.java @@ -136,8 +136,8 @@ public final class ParameterSpec { private final String name; private final CodeBlock.Builder javadoc = CodeBlock.builder(); - private final List annotations = new ArrayList<>(); - private final List modifiers = new ArrayList<>(); + public final List annotations = new ArrayList<>(); + public final List modifiers = new ArrayList<>(); private Builder(TypeName type, String name) { this.type = type; -- cgit v1.2.3