public CodeTreeBuilder startStaticCall(ExecutableElement method) { return startStaticCall(ElementUtils.findNearestEnclosingType(method).asType(), method.getSimpleName().toString()); }
public CodeTreeBuilder startStaticCall(ExecutableElement method) { return startStaticCall(ElementUtils.findNearestEnclosingType(method).asType(), method.getSimpleName().toString()); }
public static int compareMethod(ExecutableElement method1, ExecutableElement method2) { List<? extends VariableElement> parameters1 = method1.getParameters(); List<? extends VariableElement> parameters2 = method2.getParameters(); if (parameters1.size() != parameters2.size()) { return Integer.compare(parameters1.size(), parameters2.size()); } int result = 0; for (int i = 0; i < parameters1.size(); i++) { VariableElement var1 = parameters1.get(i); VariableElement var2 = parameters2.get(i); result = compareType(var1.asType(), var2.asType()); if (result != 0) { return result; } } result = method1.getSimpleName().toString().compareTo(method2.getSimpleName().toString()); if (result == 0) { // if still no difference sort by enclosing type name TypeElement enclosingType1 = ElementUtils.findNearestEnclosingType(method1); TypeElement enclosingType2 = ElementUtils.findNearestEnclosingType(method2); result = enclosingType1.getQualifiedName().toString().compareTo(enclosingType2.getQualifiedName().toString()); } return result; }
public static int compareMethod(ExecutableElement method1, ExecutableElement method2) { List<? extends VariableElement> parameters1 = method1.getParameters(); List<? extends VariableElement> parameters2 = method2.getParameters(); if (parameters1.size() != parameters2.size()) { return Integer.compare(parameters1.size(), parameters2.size()); } int result = 0; for (int i = 0; i < parameters1.size(); i++) { VariableElement var1 = parameters1.get(i); VariableElement var2 = parameters2.get(i); result = compareType(var1.asType(), var2.asType()); if (result != 0) { return result; } } result = method1.getSimpleName().toString().compareTo(method2.getSimpleName().toString()); if (result == 0) { // if still no difference sort by enclosing type name TypeElement enclosingType1 = ElementUtils.findNearestEnclosingType(method1); TypeElement enclosingType2 = ElementUtils.findNearestEnclosingType(method2); result = enclosingType1.getQualifiedName().toString().compareTo(enclosingType2.getQualifiedName().toString()); } return result; }
static boolean isCopyConstructor(ExecutableElement element) { if (element.getParameters().size() != 1) { return false; } VariableElement var = element.getParameters().get(0); TypeElement enclosingType = ElementUtils.findNearestEnclosingType(var); if (ElementUtils.typeEquals(var.asType(), enclosingType.asType())) { return true; } List<TypeElement> types = ElementUtils.getDirectSuperTypes(enclosingType); for (TypeElement type : types) { if (!(type instanceof CodeTypeElement)) { // no copy constructors which are not generated types return false; } if (ElementUtils.typeEquals(var.asType(), type.asType())) { return true; } } return false; }
public static boolean isCopyConstructor(ExecutableElement element) { if (element.getParameters().size() != 1) { return false; } VariableElement var = element.getParameters().get(0); TypeElement enclosingType = ElementUtils.findNearestEnclosingType(var); if (ElementUtils.typeEquals(var.asType(), enclosingType.asType())) { return true; } List<TypeElement> types = ElementUtils.getDirectSuperTypes(enclosingType); for (TypeElement type : types) { if (!(type instanceof CodeTypeElement)) { // no copy constructors which are not generated types return false; } if (ElementUtils.typeEquals(var.asType(), type.asType())) { return true; } } return false; }
@Override public int compareTo(TemplateMethod o) { if (this == o) { return 0; } int compare = compareBySignature(o); if (compare == 0) { // if signature sorting failed sort by id compare = getId().compareTo(o.getId()); } if (compare == 0) { // if still no difference sort by enclosing type name TypeElement enclosingType1 = ElementUtils.findNearestEnclosingType(getMethod()); TypeElement enclosingType2 = ElementUtils.findNearestEnclosingType(o.getMethod()); compare = enclosingType1.getQualifiedName().toString().compareTo(enclosingType2.getQualifiedName().toString()); } return compare; }
@Override public int compareTo(TemplateMethod o) { if (this == o) { return 0; } int compare = compareBySignature(o); if (compare == 0) { // if signature sorting failed sort by id compare = getId().compareTo(o.getId()); } if (compare == 0) { // if still no difference sort by enclosing type name TypeElement enclosingType1 = ElementUtils.findNearestEnclosingType(getMethod()); TypeElement enclosingType2 = ElementUtils.findNearestEnclosingType(o.getMethod()); compare = enclosingType1.getQualifiedName().toString().compareTo(enclosingType2.getQualifiedName().toString()); } return compare; }
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; }
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; }
private void processImpl(RoundEnvironment env) { // TODO run verifications that other annotations are not processed out of scope of the // operation or type lattice. try { ProcessorContext.setThreadLocalInstance(new ProcessorContext(processingEnv, this)); for (AnnotationProcessor<?> generator : getGenerators()) { AbstractParser<?> parser = generator.getParser(); if (parser.getAnnotationType() != null) { for (Element e : env.getElementsAnnotatedWith(parser.getAnnotationType())) { processElement(generator, e, false); } } for (Class<? extends Annotation> annotationType : parser.getTypeDelegatedAnnotationTypes()) { for (Element e : env.getElementsAnnotatedWith(annotationType)) { TypeElement processedType; if (parser.isDelegateToRootDeclaredType()) { processedType = ElementUtils.findRootEnclosingType(e); } else { processedType = ElementUtils.findNearestEnclosingType(e); } processElement(generator, processedType, false); } } } } finally { ProcessorContext.setThreadLocalInstance(null); } }
private void processImpl(RoundEnvironment env) { // TODO run verifications that other annotations are not processed out of scope of the // operation or typelattice. try { ProcessorContext.setThreadLocalInstance(new ProcessorContext(processingEnv, this)); for (AnnotationProcessor<?> generator : getGenerators()) { AbstractParser<?> parser = generator.getParser(); if (parser.getAnnotationType() != null) { for (Element e : env.getElementsAnnotatedWith(parser.getAnnotationType())) { processElement(generator, e, false); } } for (Class<? extends Annotation> annotationType : parser.getTypeDelegatedAnnotationTypes()) { for (Element e : env.getElementsAnnotatedWith(annotationType)) { TypeElement processedType; if (parser.isDelegateToRootDeclaredType()) { processedType = ElementUtils.findRootEnclosingType(e); } else { processedType = ElementUtils.findNearestEnclosingType(e); } processElement(generator, processedType, false); } } } } finally { ProcessorContext.setThreadLocalInstance(null); } }