aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/squareup/javapoet/ParameterSpec.java
diff options
context:
space:
mode:
authorHaibo Huang <hhb@google.com>2020-04-10 23:20:15 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-04-10 23:20:15 +0000
commitec30e84294518ae11b45af5989c2239afe71aa80 (patch)
treea7ffa1cb3f752b179632b40ca9703496e60172d3 /src/main/java/com/squareup/javapoet/ParameterSpec.java
parent5536a1ad7f05901763ae062e0473bd1d0cba91d5 (diff)
parentc658b69bb67a234d5867457c312eae14ace1f6dd (diff)
downloadjavapoet-ec30e84294518ae11b45af5989c2239afe71aa80.tar.gz
Merge "Upgrade javapoet to javapoet-1.12.1" am: c658b69bb6
Change-Id: I3227f46ef627a87063fa96a52dbeaefdc5645f1b
Diffstat (limited to 'src/main/java/com/squareup/javapoet/ParameterSpec.java')
-rw-r--r--src/main/java/com/squareup/javapoet/ParameterSpec.java31
1 files changed, 29 insertions, 2 deletions
diff --git a/src/main/java/com/squareup/javapoet/ParameterSpec.java b/src/main/java/com/squareup/javapoet/ParameterSpec.java
index 63da3f2..b8f3129 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;
@@ -35,12 +37,14 @@ public final class ParameterSpec {
public final List<AnnotationSpec> annotations;
public final Set<Modifier> 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) {
@@ -81,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<AnnotationSpec> 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();
}
@@ -121,15 +134,26 @@ 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<AnnotationSpec> annotations = new ArrayList<>();
- private final List<Modifier> modifiers = new ArrayList<>();
+ public final List<AnnotationSpec> annotations = new ArrayList<>();
+ public final List<Modifier> modifiers = new ArrayList<>();
private Builder(TypeName type, String name) {
this.type = type;
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<AnnotationSpec> annotationSpecs) {
checkArgument(annotationSpecs != null, "annotationSpecs == null");
for (AnnotationSpec annotationSpec : annotationSpecs) {
@@ -160,6 +184,9 @@ public final class ParameterSpec {
public Builder addModifiers(Iterable<Modifier> 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;