diff --git a/src/main/java/com/squareup/javapoet/TypeSpec.java b/src/main/java/com/squareup/javapoet/TypeSpec.java index 6cd2ea636..e112fe8c4 100644 --- a/src/main/java/com/squareup/javapoet/TypeSpec.java +++ b/src/main/java/com/squareup/javapoet/TypeSpec.java @@ -473,6 +473,19 @@ public Builder addModifiers(Modifier... modifiers) { Collections.addAll(this.modifiers, modifiers); return this; } + /** + * This is addModifier version for Iterable input. + + * @return Builder + */ + //CS304 Issue link: https://github.com/square/javapoet/issues/841 + public Builder addModifiers(Iterable modifiers){ + checkNotNull(modifiers, "modifiers == null"); + for (Modifier modifier : modifiers){ + this.modifiers.add(modifier); + } + return this; + } public Builder addTypeVariables(Iterable typeVariables) { checkArgument(typeVariables != null, "typeVariables == null"); diff --git a/src/test/java/com/squareup/javapoet/TypeSpecTest.java b/src/test/java/com/squareup/javapoet/TypeSpecTest.java index 759b99d2d..9d1e0aad6 100644 --- a/src/test/java/com/squareup/javapoet/TypeSpecTest.java +++ b/src/test/java/com/squareup/javapoet/TypeSpecTest.java @@ -1999,6 +1999,24 @@ private String toString(TypeSpec typeSpec) { .isEqualTo("modifiers contain null"); } } +//CS304 (manually written) Issue link: https://github.com/square/javapoet/issues/841 + @Test public void ModifiersListAdditions(){ + Modifier[] modifiers = {Modifier.PUBLIC, Modifier.FINAL}; + TypeSpec.Builder builder = + TypeSpec.classBuilder("Taco").addModifiers(modifiers); + + assertThat(builder.build().modifiers).containsExactly(Modifier.PUBLIC, Modifier.FINAL); + } +//CS304 (manually written) Issue link: https://github.com/square/javapoet/issues/841 + @Test public void nullModifiersListAdditions(){ + try { + TypeSpec.classBuilder("Taco") + .addModifiers((Iterable) null).build(); + fail(); + } catch (NullPointerException e) { + assertThat(e.getMessage()).isEqualTo("modifiers == null"); + } + } @Test public void nullTypeVariablesAddition() { try {