Skip to content

Commit

Permalink
Merge pull request square#307 from sgoldfed/eliminatewarnings
Browse files Browse the repository at this point in the history
switch to non-deprecated JavaWriter methods
  • Loading branch information
swankjesse committed Aug 12, 2013
2 parents fcbc4ce + 81e5d6e commit 5155910
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.EnumSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
Expand All @@ -39,7 +40,6 @@
import javax.lang.model.element.Element;
import javax.lang.model.element.ElementKind;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.Modifier;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.VariableElement;
import javax.lang.model.type.TypeKind;
Expand All @@ -58,9 +58,11 @@
import static dagger.internal.codegen.Util.typeToString;
import static dagger.internal.loaders.GeneratedAdapters.INJECT_ADAPTER_SUFFIX;
import static dagger.internal.loaders.GeneratedAdapters.STATIC_INJECTION_SUFFIX;
import static java.lang.reflect.Modifier.FINAL;
import static java.lang.reflect.Modifier.PRIVATE;
import static java.lang.reflect.Modifier.PUBLIC;
import static javax.lang.model.element.Modifier.ABSTRACT;
import static javax.lang.model.element.Modifier.FINAL;
import static javax.lang.model.element.Modifier.PRIVATE;
import static javax.lang.model.element.Modifier.PUBLIC;
import static javax.lang.model.element.Modifier.STATIC;

/**
* Generates an implementation of {@link Binding} that injects the
Expand Down Expand Up @@ -148,26 +150,26 @@ private boolean validateInjectable(Element injectable) {
}

if (injectable.getKind() == ElementKind.FIELD
&& injectable.getModifiers().contains(Modifier.FINAL)) {
&& injectable.getModifiers().contains(FINAL)) {
error("Can't inject a final field: " + elementToString(injectable), injectable);
return false;
}

if (injectable.getKind() == ElementKind.FIELD
&& injectable.getModifiers().contains(Modifier.PRIVATE)) {
&& injectable.getModifiers().contains(PRIVATE)) {
error("Can't inject a private field: " + elementToString(injectable), injectable);
return false;
}

if (injectable.getKind() == ElementKind.CONSTRUCTOR
&& injectable.getModifiers().contains(Modifier.PRIVATE)) {
&& injectable.getModifiers().contains(PRIVATE)) {
error("Can't inject a private constructor: " + elementToString(injectable), injectable);
return false;
}

ElementKind elementKind = injectableType.getEnclosingElement().getKind();
boolean isClassOrInterface = elementKind.isClass() || elementKind.isInterface();
boolean isStatic = injectableType.getModifiers().contains(Modifier.STATIC);
boolean isStatic = injectableType.getModifiers().contains(STATIC);

if (isClassOrInterface && !isStatic) {
error("Can't inject a non-static inner class: " + elementToString(injectable),
Expand All @@ -183,7 +185,7 @@ private boolean validateInjectable(Element injectable) {
*/
private InjectedClass createInjectedClass(String injectedClassName) {
TypeElement type = processingEnv.getElementUtils().getTypeElement(injectedClassName);
boolean isAbstract = type.getModifiers().contains(Modifier.ABSTRACT);
boolean isAbstract = type.getModifiers().contains(ABSTRACT);
List<Element> staticFields = new ArrayList<Element>();
ExecutableElement constructor = null;
List<Element> fields = new ArrayList<Element>();
Expand All @@ -194,7 +196,7 @@ private InjectedClass createInjectedClass(String injectedClassName) {

switch (member.getKind()) {
case FIELD:
if (member.getModifiers().contains(Modifier.STATIC)) {
if (member.getModifiers().contains(STATIC)) {
staticFields.add(member);
} else {
fields.add(member);
Expand Down Expand Up @@ -243,7 +245,7 @@ private void generateInjectAdapter(TypeElement type, ExecutableElement construct
String adapterName = adapterName(type, INJECT_ADAPTER_SUFFIX);
JavaFileObject sourceFile = processingEnv.getFiler().createSourceFile(adapterName, type);
JavaWriter writer = new JavaWriter(sourceFile.openWriter());
boolean isAbstract = type.getModifiers().contains(Modifier.ABSTRACT);
boolean isAbstract = type.getModifiers().contains(ABSTRACT);
boolean injectMembers = !fields.isEmpty() || supertype != null;
boolean disambiguateFields = !fields.isEmpty()
&& (constructor != null)
Expand All @@ -256,7 +258,7 @@ private void generateInjectAdapter(TypeElement type, ExecutableElement construct
writer.emitImports(findImports(dependent, injectMembers, constructor != null));
writer.emitEmptyLine();
writer.emitJavadoc(bindingTypeDocs(strippedTypeName, isAbstract, injectMembers, dependent));
writer.beginType(adapterName, "class", PUBLIC | FINAL,
writer.beginType(adapterName, "class", EnumSet.of(PUBLIC, FINAL),
JavaWriter.type(Binding.class, strippedTypeName),
implementedInterfaces(strippedTypeName, injectMembers, constructor != null));
writeMemberBindingsFields(writer, fields, disambiguateFields);
Expand Down Expand Up @@ -301,7 +303,8 @@ private void generateStaticInjection(TypeElement type, List<Element> fields) thr
Linker.class.getName()));
writer.emitEmptyLine();
writer.emitJavadoc(AdapterJavadocs.STATIC_INJECTION_TYPE, type.getSimpleName());
writer.beginType(adapterName, "class", PUBLIC | FINAL, StaticInjection.class.getSimpleName());
writer.beginType(
adapterName, "class", EnumSet.of(PUBLIC, FINAL), StaticInjection.class.getSimpleName());
writeMemberBindingsFields(writer, fields, false);
writer.emitEmptyLine();
writeAttachMethod(writer, null, fields, false, typeName, null, true);
Expand All @@ -314,7 +317,7 @@ private void writeMemberBindingsFields(
JavaWriter writer, List<Element> fields, boolean disambiguateFields) throws IOException {
for (Element field : fields) {
writer.emitField(JavaWriter.type(Binding.class, typeToString(field.asType())),
fieldName(disambiguateFields, field), PRIVATE);
fieldName(disambiguateFields, field), EnumSet.of(PRIVATE));
}
}

Expand All @@ -324,19 +327,19 @@ private void writeParameterBindingsFields(
for (VariableElement parameter : constructor.getParameters()) {
writer.emitField(JavaWriter.type(Binding.class,
typeToString(parameter.asType())),
parameterName(disambiguateFields, parameter), PRIVATE);
parameterName(disambiguateFields, parameter), EnumSet.of(PRIVATE));
}
}

private void writeSupertypeInjectorField(JavaWriter writer, TypeMirror supertype)
throws IOException {
writer.emitField(
JavaWriter.type(Binding.class, rawTypeToString(supertype, '.')), "supertype", PRIVATE);
writer.emitField(JavaWriter.type(Binding.class, rawTypeToString(supertype, '.')), "supertype",
EnumSet.of(PRIVATE));
}

private void writeInjectAdapterConstructor(JavaWriter writer, ExecutableElement constructor,
TypeElement type, String strippedTypeName, String adapterName) throws IOException {
writer.beginMethod(null, adapterName, PUBLIC);
writer.beginMethod(null, adapterName, EnumSet.of(PUBLIC));
String key = (constructor != null)
? JavaWriter.stringLiteral(GeneratorKeys.get(type.asType()))
: null;
Expand All @@ -356,7 +359,8 @@ private void writeAttachMethod(JavaWriter writer, ExecutableElement constructor,
writer.emitAnnotation(Override.class);
}
writer.emitAnnotation(SuppressWarnings.class, JavaWriter.stringLiteral("unchecked"));
writer.beginMethod("void", "attach", PUBLIC, Linker.class.getCanonicalName(), "linker");
writer.beginMethod(
"void", "attach", EnumSet.of(PUBLIC), Linker.class.getCanonicalName(), "linker");
if (constructor != null) {
for (VariableElement parameter : constructor.getParameters()) {
writer.emitStatement(
Expand Down Expand Up @@ -393,7 +397,7 @@ private void writeGetDependenciesMethod(JavaWriter writer, ExecutableElement con
writer.emitAnnotation(Override.class);
}
String setOfBindings = JavaWriter.type(Set.class, "Binding<?>");
writer.beginMethod("void", "getDependencies", PUBLIC, setOfBindings, "getBindings",
writer.beginMethod("void", "getDependencies", EnumSet.of(PUBLIC), setOfBindings, "getBindings",
setOfBindings, "injectMembersBindings");
if (constructor != null) {
for (Element parameter : constructor.getParameters()) {
Expand All @@ -415,7 +419,7 @@ private void writeGetMethod(JavaWriter writer, ExecutableElement constructor,
throws IOException {
writer.emitJavadoc(AdapterJavadocs.GET_METHOD, strippedTypeName);
writer.emitAnnotation(Override.class);
writer.beginMethod(strippedTypeName, "get", PUBLIC);
writer.beginMethod(strippedTypeName, "get", EnumSet.of(PUBLIC));
StringBuilder newInstance = new StringBuilder();
newInstance.append(strippedTypeName).append(" result = new ");
newInstance.append(strippedTypeName).append('(');
Expand All @@ -440,7 +444,7 @@ private void writeMembersInjectMethod(JavaWriter writer, List<Element> fields,
throws IOException {
writer.emitJavadoc(AdapterJavadocs.MEMBERS_INJECT_METHOD, strippedTypeName);
writer.emitAnnotation(Override.class);
writer.beginMethod("void", "injectMembers", PUBLIC, strippedTypeName, "object");
writer.beginMethod("void", "injectMembers", EnumSet.of(PUBLIC), strippedTypeName, "object");
for (Element field : fields) {
writer.emitStatement("object.%s = %s.get()",
field.getSimpleName(),
Expand All @@ -458,7 +462,7 @@ private void writeStaticInjectMethod(JavaWriter writer, List<Element> fields, St
writer.emitEmptyLine();
writer.emitJavadoc(AdapterJavadocs.STATIC_INJECT_METHOD);
writer.emitAnnotation(Override.class);
writer.beginMethod("void", "inject", PUBLIC);
writer.beginMethod("void", "inject", EnumSet.of(PUBLIC));
for (Element field : fields) {
writer.emitStatement("%s.%s = %s.get()",
writer.compressType(typeName),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
Expand Down Expand Up @@ -64,10 +65,11 @@
import static dagger.internal.codegen.Util.isInterface;
import static dagger.internal.codegen.Util.typeToString;
import static dagger.internal.loaders.GeneratedAdapters.MODULE_ADAPTER_SUFFIX;
import static java.lang.reflect.Modifier.FINAL;
import static java.lang.reflect.Modifier.PRIVATE;
import static java.lang.reflect.Modifier.PUBLIC;
import static java.lang.reflect.Modifier.STATIC;
import static javax.lang.model.element.Modifier.ABSTRACT;
import static javax.lang.model.element.Modifier.FINAL;
import static javax.lang.model.element.Modifier.PRIVATE;
import static javax.lang.model.element.Modifier.PUBLIC;
import static javax.lang.model.element.Modifier.STATIC;

/**
* Generates an implementation of {@link ModuleAdapter} that includes a binding
Expand Down Expand Up @@ -136,17 +138,17 @@ private Map<String, List<ExecutableElement>> providerMethodsByClass(RoundEnviron
}
TypeElement type = (TypeElement) providerMethod.getEnclosingElement();
Set<Modifier> typeModifiers = type.getModifiers();
if (typeModifiers.contains(Modifier.PRIVATE)
|| typeModifiers.contains(Modifier.ABSTRACT)) {
if (typeModifiers.contains(PRIVATE)
|| typeModifiers.contains(ABSTRACT)) {
error("Classes declaring @Provides methods must not be private or abstract: "
+ type.getQualifiedName(), type);
continue;
}

Set<Modifier> methodModifiers = providerMethod.getModifiers();
if (methodModifiers.contains(Modifier.PRIVATE)
|| methodModifiers.contains(Modifier.ABSTRACT)
|| methodModifiers.contains(Modifier.STATIC)) {
if (methodModifiers.contains(PRIVATE)
|| methodModifiers.contains(ABSTRACT)
|| methodModifiers.contains(STATIC)) {
error("@Provides methods must not be private, abstract or static: "
+ type.getQualifiedName() + "." + providerMethod, providerMethod);
continue;
Expand Down Expand Up @@ -245,7 +247,7 @@ private void generateModuleAdapter(TypeElement type, Map<String, Object> module,
String typeName = type.getQualifiedName().toString();
writer.emitEmptyLine();
writer.emitJavadoc(AdapterJavadocs.MODULE_TYPE);
writer.beginType(adapterName, "class", PUBLIC | FINAL,
writer.beginType(adapterName, "class", EnumSet.of(PUBLIC, FINAL),
JavaWriter.type(ModuleAdapter.class, typeName));

StringBuilder injectsField = new StringBuilder().append("{ ");
Expand All @@ -257,7 +259,7 @@ private void generateModuleAdapter(TypeElement type, Map<String, Object> module,
injectsField.append(JavaWriter.stringLiteral(key)).append(", ");
}
injectsField.append("}");
writer.emitField("String[]", "INJECTS", PRIVATE | STATIC | FINAL,
writer.emitField("String[]", "INJECTS", EnumSet.of(PRIVATE, STATIC, FINAL),
injectsField.toString());

StringBuilder staticInjectionsField = new StringBuilder().append("{ ");
Expand All @@ -266,7 +268,7 @@ private void generateModuleAdapter(TypeElement type, Map<String, Object> module,
staticInjectionsField.append(typeToString(typeMirror)).append(".class, ");
}
staticInjectionsField.append("}");
writer.emitField("Class<?>[]", "STATIC_INJECTIONS", PRIVATE | STATIC | FINAL,
writer.emitField("Class<?>[]", "STATIC_INJECTIONS", EnumSet.of(PRIVATE, STATIC, FINAL),
staticInjectionsField.toString());

StringBuilder includesField = new StringBuilder().append("{ ");
Expand All @@ -281,10 +283,11 @@ private void generateModuleAdapter(TypeElement type, Map<String, Object> module,
includesField.append(typeToString(typeMirror)).append(".class, ");
}
includesField.append("}");
writer.emitField("Class<?>[]", "INCLUDES", PRIVATE | STATIC | FINAL, includesField.toString());
writer.emitField(
"Class<?>[]", "INCLUDES", EnumSet.of(PRIVATE, STATIC, FINAL), includesField.toString());

writer.emitEmptyLine();
writer.beginMethod(null, adapterName, PUBLIC);
writer.beginMethod(null, adapterName, EnumSet.of(PUBLIC));
writer.emitStatement("super(INJECTS, STATIC_INJECTIONS, %s /*overrides*/, "
+ "INCLUDES, %s /*complete*/, %s /*library*/)", overrides, complete, library);
writer.endMethod();
Expand All @@ -293,7 +296,7 @@ private void generateModuleAdapter(TypeElement type, Map<String, Object> module,
if (noArgsConstructor != null && isCallableConstructor(noArgsConstructor)) {
writer.emitEmptyLine();
writer.emitAnnotation(Override.class);
writer.beginMethod(typeName, "newModule", PUBLIC);
writer.beginMethod(typeName, "newModule", EnumSet.of(PUBLIC));
writer.emitStatement("return new %s()", typeName);
writer.endMethod();
}
Expand All @@ -306,7 +309,7 @@ private void generateModuleAdapter(TypeElement type, Map<String, Object> module,
writer.emitEmptyLine();
writer.emitJavadoc(AdapterJavadocs.GET_DEPENDENCIES_METHOD);
writer.emitAnnotation(Override.class);
writer.beginMethod("void", "getBindings", PUBLIC, BINDINGS_MAP, "map");
writer.beginMethod("void", "getBindings", EnumSet.of(PUBLIC), BINDINGS_MAP, "map");

for (ExecutableElement providerMethod : providerMethods) {
Provides provides = providerMethod.getAnnotation(Provides.class);
Expand Down Expand Up @@ -420,18 +423,18 @@ private void generateProvidesAdapter(JavaWriter writer, ExecutableElement provid

writer.emitEmptyLine();
writer.emitJavadoc(bindingTypeDocs(returnType, false, false, dependent));
writer.beginType(className, "class", PUBLIC | FINAL | STATIC,
writer.beginType(className, "class", EnumSet.of(PUBLIC, STATIC, FINAL),
JavaWriter.type(Binding.class, returnType),
JavaWriter.type(Provider.class, returnType));
writer.emitField(moduleType, "module", PRIVATE | FINAL);
writer.emitField(moduleType, "module", EnumSet.of(PRIVATE, FINAL));
for (Element parameter : parameters) {
TypeMirror parameterType = parameter.asType();
writer.emitField(JavaWriter.type(Binding.class, typeToString(parameterType)),
parameterName(parameter), PRIVATE);
parameterName(parameter), EnumSet.of(PRIVATE));
}

writer.emitEmptyLine();
writer.beginMethod(null, className, PUBLIC, moduleType, "module");
writer.beginMethod(null, className, EnumSet.of(PUBLIC), moduleType, "module");
boolean singleton = providerMethod.getAnnotation(Singleton.class) != null;
String key = JavaWriter.stringLiteral(GeneratorKeys.get(providerMethod));
String membersKey = null;
Expand All @@ -447,7 +450,8 @@ private void generateProvidesAdapter(JavaWriter writer, ExecutableElement provid
writer.emitJavadoc(AdapterJavadocs.ATTACH_METHOD);
writer.emitAnnotation(Override.class);
writer.emitAnnotation(SuppressWarnings.class, JavaWriter.stringLiteral("unchecked"));
writer.beginMethod("void", "attach", PUBLIC, Linker.class.getCanonicalName(), "linker");
writer.beginMethod(
"void", "attach", EnumSet.of(PUBLIC), Linker.class.getCanonicalName(), "linker");
for (VariableElement parameter : parameters) {
String parameterKey = GeneratorKeys.get(parameter);
writer.emitStatement(
Expand All @@ -463,8 +467,8 @@ private void generateProvidesAdapter(JavaWriter writer, ExecutableElement provid
writer.emitJavadoc(AdapterJavadocs.GET_DEPENDENCIES_METHOD);
writer.emitAnnotation(Override.class);
String setOfBindings = JavaWriter.type(Set.class, "Binding<?>");
writer.beginMethod("void", "getDependencies", PUBLIC, setOfBindings, "getBindings",
setOfBindings, "injectMembersBindings");
writer.beginMethod("void", "getDependencies", EnumSet.of(PUBLIC), setOfBindings,
"getBindings", setOfBindings, "injectMembersBindings");
for (Element parameter : parameters) {
writer.emitStatement("getBindings.add(%s)", parameter.getSimpleName().toString());
}
Expand All @@ -474,7 +478,7 @@ private void generateProvidesAdapter(JavaWriter writer, ExecutableElement provid
writer.emitEmptyLine();
writer.emitJavadoc(AdapterJavadocs.GET_METHOD, returnType);
writer.emitAnnotation(Override.class);
writer.beginMethod(returnType, "get", PUBLIC);
writer.beginMethod(returnType, "get", EnumSet.of(PUBLIC));
StringBuilder args = new StringBuilder();
boolean first = true;
for (Element parameter : parameters) {
Expand Down

0 comments on commit 5155910

Please sign in to comment.