public static OrganizedImports organize(CodeTypeElement topLevelClass) { OrganizedImports organized = new OrganizedImports(topLevelClass); organized.organizeImpl(); return organized; }
public String createStaticFieldReference(Element enclosedElement, TypeMirror type, String fieldName) { return createStaticReference(enclosedElement, type, fieldName); }
private String createStaticReference(Element enclosedElement, TypeMirror type, String name) { // ambiguous import return createTypeReference(enclosedElement, type) + "." + name; }
return ElementUtils.getSimpleName(type); case DECLARED: return createDeclaredTypeName(enclosedElement, (DeclaredType) type); case ARRAY: return createTypeReference(enclosedElement, ((ArrayType) type).getComponentType()) + "[]"; case WILDCARD: return createWildcardName(enclosedElement, (WildcardType) type); case TYPEVAR: TypeVariable var = (TypeVariable) type; String name; if (isTypeVariableDeclared(enclosedElement, var.asElement().getSimpleName().toString())) {
public String createTypeReference(Element enclosedElement, TypeMirror type) { switch (type.getKind()) { case BOOLEAN: case BYTE: case CHAR: case DOUBLE: case FLOAT: case SHORT: case INT: case LONG: case VOID: return ElementUtils.getSimpleName(type); case DECLARED: return createDeclaredTypeName(enclosedElement, (DeclaredType) type); case ARRAY: return createTypeReference(enclosedElement, ((ArrayType) type).getComponentType()) + "[]"; case WILDCARD: return createWildcardName(enclosedElement, (WildcardType) type); case TYPEVAR: return "?"; default: throw new RuntimeException("Unknown type specified " + type.getKind() + " mirror: " + type); } }
private boolean needsImport(Element enclosed, TypeMirror importType) { String importPackagName = getPackageName(importType); TypeElement enclosedElement = findNearestEnclosingType(enclosed); if (importPackagName == null) { return false; } else if (importPackagName.equals("java.lang")) { return false; } else if (importPackagName.equals(getPackageName(topLevelClass)) && ElementUtils.isTopLevelClass(importType)) { return false; // same package name -> no import } String enclosedElementId = ElementUtils.getUniqueIdentifier(enclosedElement.asType()); Set<String> autoImportedTypes = autoImportCache.get(enclosedElementId); if (autoImportedTypes == null) { List<Element> elements = ElementUtils.getElementHierarchy(enclosedElement); autoImportedTypes = new HashSet<>(); for (Element element : elements) { if (element.getKind().isClass()) { collectSuperTypeImports((TypeElement) element, autoImportedTypes); collectInnerTypeImports((TypeElement) element, autoImportedTypes); } } autoImportCache.put(enclosedElementId, autoImportedTypes); } String qualifiedName = getQualifiedName(importType); if (autoImportedTypes.contains(qualifiedName)) { return false; } return true; }
case STATIC_FIELD_REFERENCE: if (e.getString() != null) { write(imports.createStaticFieldReference(enclosingElement, e.getType(), e.getString())); } else { write("null"); case STATIC_METHOD_REFERENCE: if (e.getString() != null) { write(imports.createStaticMethodReference(enclosingElement, e.getType(), e.getString())); } else { write("null");
public Set<CodeImport> generateImports() { Set<CodeImport> imports = new HashSet<>(); imports.addAll(generateImports(classImportUsage)); return imports; }
private static void collectInnerTypeImports(TypeElement e, Set<String> autoImportedTypes) { autoImportedTypes.add(getQualifiedName(e)); for (TypeElement innerClass : ElementFilter.typesIn(e.getEnclosedElements())) { collectInnerTypeImports(innerClass, autoImportedTypes); } }
private boolean needsImport(Element enclosed, TypeMirror importType) { String importPackagName = getPackageName(importType); TypeElement enclosedElement = findNearestEnclosingType(enclosed); if (importPackagName == null) { return false; } else if (importPackagName.equals("java.lang")) { return false; } else if (importPackagName.equals(getPackageName(topLevelClass)) && ElementUtils.isTopLevelClass(importType)) { return false; // same package name -> no import } String enclosedElementId = ElementUtils.getUniqueIdentifier(enclosedElement.asType()); Set<String> autoImportedTypes = autoImportCache.get(enclosedElementId); if (autoImportedTypes == null) { List<Element> elements = ElementUtils.getElementHierarchy(enclosedElement); autoImportedTypes = new HashSet<>(); for (Element element : elements) { if (element.getKind().isClass()) { collectSuperTypeImports((TypeElement) element, autoImportedTypes); collectInnerTypeImports((TypeElement) element, autoImportedTypes); } } autoImportCache.put(enclosedElementId, autoImportedTypes); } String qualifiedName = getQualifiedName(importType); if (autoImportedTypes.contains(qualifiedName)) { return false; } return true; }
case STATIC_FIELD_REFERENCE: if (e.getString() != null) { write(imports.createStaticFieldReference(enclosingElement, e.getType(), e.getString())); } else { write("null"); case STATIC_METHOD_REFERENCE: if (e.getString() != null) { write(imports.createStaticMethodReference(enclosingElement, e.getType(), e.getString())); } else { write("null");
public Set<CodeImport> generateImports() { Set<CodeImport> imports = new HashSet<>(); imports.addAll(generateImports(classImportUsage)); return imports; }
private static void collectInnerTypeImports(TypeElement e, Set<String> autoImportedTypes) { autoImportedTypes.add(getQualifiedName(e)); for (TypeElement innerClass : ElementFilter.typesIn(e.getEnclosedElements())) { collectInnerTypeImports(innerClass, autoImportedTypes); } }
private String createStaticReference(Element enclosedElement, TypeMirror type, String name) { // ambiguous import return createTypeReference(enclosedElement, type) + "." + name; }
public static OrganizedImports organize(CodeTypeElement topLevelClass) { OrganizedImports organized = new OrganizedImports(topLevelClass); organized.organizeImpl(); return organized; }
writeEmptyLn(); Set<CodeImport> generateImports = imports.generateImports(); List<CodeImport> typeImports = new ArrayList<>(); List<CodeImport> staticImports = new ArrayList<>();
public String createStaticMethodReference(Element enclosedElement, TypeMirror type, String methodName) { return createStaticReference(enclosedElement, type, methodName); }
private String useImport(Element enclosedType, TypeMirror type) { if (imports != null) { return imports.createTypeReference(enclosedType, type); } else { return ElementUtils.getSimpleName(type); } }
Set<CodeImport> generateImports = imports.generateImports(); List<CodeImport> typeImports = new ArrayList<>(); List<CodeImport> staticImports = new ArrayList<>();
public String createStaticMethodReference(Element enclosedElement, TypeMirror type, String methodName) { return createStaticReference(enclosedElement, type, methodName); }