@Override public void run(CompilationController controller) throws Exception { controller.toPhase(Phase.RESOLVED); fileObject = controller.getFileObject(); TypeElement typeElement = null; List<? extends TypeElement> topLevelElements = controller.getTopLevelElements(); for (Iterator<? extends TypeElement> it = topLevelElements.iterator(); it.hasNext();) { typeElement = it.next(); if (typeElement.getKind() == ElementKind.CLASS) { className = typeElement.getSimpleName().toString(); break; Elements elements = controller.getElements(); TypeElement testcase = elements.getTypeElement(TESTCASE); boolean junit3 = (testcase != null && typeElement != null) ? controller.getTypes().isSubtype(typeElement.asType(), testcase.asType()) : false; TreePath tp = controller.getTreeUtilities().pathFor(caretPosition); while (tp != null && tp.getLeaf().getKind() != Kind.METHOD) { tp = tp.getParentPath(); Element element = controller.getTrees().getElement(tp); String mn = element.getSimpleName().toString(); if (junit3){ methodName = mn.startsWith("test") ? mn : null; //NOI18N }else{ List<? extends AnnotationMirror> allAnnotationMirrors = elements.getAllAnnotationMirrors(element); for (Iterator<? extends AnnotationMirror> it = allAnnotationMirrors.iterator(); it.hasNext();) { AnnotationMirror annotationMirror = it.next();
public void run(CompilationController compilationController) throws Exception { compilationController.toPhase(Phase.ELEMENTS_RESOLVED); Trees trees = compilationController.getTrees(); CompilationUnitTree compilationUnitTree = compilationController.getCompilationUnit(); List<?extends Tree> typeDecls = compilationUnitTree.getTypeDecls(); for (Tree tree : typeDecls) { Element element = trees.getElement(trees.getPath(compilationUnitTree, tree)); if (element != null && element.getKind() == ElementKind.CLASS && element.getSimpleName().contentEquals(fo.getName())){ long pos = trees.getSourcePositions().getStartPosition(compilationUnitTree, tree); line[0] = compilationUnitTree.getLineMap().getLineNumber(pos); break; } } } }, true);
@Override public void run(CompilationController controller) throws IOException { controller.toPhase(JavaSource.Phase.ELEMENTS_RESOLVED); TypeElement typeElement = controller.getElements().getTypeElement(className); if (typeElement != null) { result[0] = SourceUtils.getFile(ElementHandle.create(typeElement), controller.getClasspathInfo()); } } }, true);
@Override public void run(CompilationController controller) throws IOException { controller.toPhase(JavaSource.Phase.ELEMENTS_RESOLVED); TypeElement typeElement = controller.getElements().getTypeElement(entityClass); enumerateEntityFields(params, controller, typeElement, managedBeanProperty, collectionComponent, initValueGetters); } }, true);
/** * A convenience method for converting a <code>ClassTree</code> to the * corresponding <code>TypeElement</code>, if any. */ static TypeElement classTree2TypeElement(CompilationController controller, ClassTree classTree) { assert controller != null; assert classTree != null; TreePath classTreePath = controller.getTrees().getPath(controller.getCompilationUnit(), classTree); return (TypeElement)controller.getTrees().getElement(classTreePath); }
@Override Integer run(CompilationController controller, MethodTree methodTree, ExecutableElement methodElement) { return (int) controller.getTrees().getSourcePositions().getEndPosition( controller.getCompilationUnit(), methodTree); } }.execute();
public void run(CompilationController controller) throws Exception { controller.toPhase(Phase.RESOLVED); fo = controller.getFileObject(); TypeElement typeElement = null; List<? extends TypeElement> topLevelElements = controller.getTopLevelElements(); for (Iterator<? extends TypeElement> it = topLevelElements.iterator(); it.hasNext();) { typeElement = it.next(); if (typeElement.getKind() == ElementKind.CLASS) { className = typeElement.getSimpleName().toString(); break; Elements elements = controller.getElements(); if (typeElement != null) { packageName = elements.getPackageOf(typeElement).getQualifiedName().toString(); TreePath tp = controller.getTreeUtilities().pathFor(caretPosition); while (tp != null && tp.getLeaf().getKind() != Kind.METHOD) { tp = tp.getParentPath(); Element element = controller.getTrees().getElement(tp); List<? extends AnnotationMirror> allAnnotationMirrors = elements.getAllAnnotationMirrors(element); for (Iterator<? extends AnnotationMirror> it = allAnnotationMirrors.iterator(); it.hasNext();) { AnnotationMirror annotationMirror = it.next(); typeElement = (TypeElement) annotationMirror.getAnnotationType().asElement(); if (typeElement.getQualifiedName().contentEquals(ANNOTATION)) { methodName = element.getSimpleName().toString(); break;
private void addEnumConstants(Env env, TypeElement elem) { Elements elements = env.getController().getElements(); Trees trees = env.getController().getTrees(); TreePath path = env.getPath().getParentPath(); Set<Element> alreadyUsed = new HashSet<>(); if (path != null && path.getLeaf().getKind() == Tree.Kind.SWITCH) { SwitchTree st = (SwitchTree)path.getLeaf(); for (CaseTree ct : st.getCases()) { Element e = trees.getElement(new TreePath(path, ct.getExpression())); if (e != null && e.getKind() == ENUM_CONSTANT) { alreadyUsed.add(e); } } } for (Element e : elem.getEnclosedElements()) { if (e.getKind() == ENUM_CONSTANT && !alreadyUsed.contains(e)) { String name = e.getSimpleName().toString(); if (startsWith(env, name) && (Utilities.isShowDeprecatedMembers() || !elements.isDeprecated(e))) { results.add(itemFactory.createVariableItem(env.getController(), (VariableElement) e, e.asType(), anchorOffset, null, false, elements.isDeprecated(e), false, env.assignToVarPos())); } } } }
private void insideAnnotationAttribute(Env env, TreePath annotationPath, Name attributeName) throws IOException { CompilationController controller = env.getController(); controller.toPhase(Phase.ELEMENTS_RESOLVED); Trees trees = controller.getTrees(); AnnotationTree at = (AnnotationTree) annotationPath.getLeaf(); Element annTypeElement = trees.getElement(new TreePath(annotationPath, at.getAnnotationType())); Element el = null; TreePath pPath = annotationPath.getParentPath(); if (pPath.getLeaf().getKind() == Tree.Kind.COMPILATION_UNIT) { el = trees.getElement(pPath); } else { pPath = pPath.getParentPath(); Tree.Kind pKind = pPath.getLeaf().getKind(); if (TreeUtilities.CLASS_TREE_KINDS.contains(pKind) || pKind == Tree.Kind.METHOD || pKind == Tree.Kind.VARIABLE) { el = trees.getElement(pPath); if (el != null && annTypeElement != null && annTypeElement.getKind() == ANNOTATION_TYPE) { ExecutableElement memberElement = null; for (Element e : ((TypeElement) annTypeElement).getEnclosedElements()) { if (e.getKind() == METHOD && attributeName.contentEquals(e.getSimpleName())) { memberElement = (ExecutableElement) e; break;
@Override public void run(CompilationController ci) throws Exception { if (ci.toPhase(Phase.RESOLVED).compareTo(Phase.RESOLVED) < 0) {//TODO: ELEMENTS_RESOLVED may be sufficient ErrorManager.getDefault().log(ErrorManager.WARNING, "Unable to resolve "+ci.getFileObject()+" to phase "+Phase.RESOLVED+", current phase = "+ci.getPhase()+ "\nDiagnostics = "+ci.getDiagnostics()+ "\nFree memory = "+Runtime.getRuntime().freeMemory()); return; String text = ci.getText(); int l = text.length(); char c = 0; Tree tree = ci.getTreeUtilities().pathFor(offset).getLeaf(); if (tree.getKind() == Tree.Kind.METHOD) { Element el = ci.getTrees().getElement(ci.getTrees().getPath(ci.getCompilationUnit(), tree)); if (el != null && (el.getKind() == ElementKind.METHOD || el.getKind() == ElementKind.CONSTRUCTOR)) { currentMethodPtr[0] = el.getSimpleName().toString(); if (currentMethodPtr[0].equals("<init>")) { currentMethodPtr[0] = el.getEnclosingElement().getSimpleName().toString(); currentMethodPtr[1] = createSignature((ExecutableElement) el, ci.getTypes()); Element enclosingClassElement = el;
public void run(CompilationController compilationController) throws Exception { compilationController.toPhase(Phase.RESOLVED); Element element = elementHandle.resolve(compilationController); if (element != null && element.getKind() == ElementKind.METHOD) { ExecutableElement executableElement = (ExecutableElement) element; TypeMirror typeMirror = executableElement.getReturnType(); if (typeMirror != null && typeMirror.getKind() == TypeKind.DECLARED) { DeclaredType declaredType = (DeclaredType) typeMirror; TypeElement typeElement = (TypeElement) declaredType.asElement(); if (typeElement.getQualifiedName().toString().equals(finalRefactoringSourceFQN)) { TreePathHandle treePathHandle = TreePathHandle.create(compilationController.getTrees().getPath(element), compilationController); methodRenameRefactoring[0] = new RenameRefactoring(Lookups.fixed(treePathHandle)); methodRenameRefactoring[0].getContext().add(compilationController); } } } } }, true);
private void insideUnionType(Env env) throws IOException { TreePath path = env.getPath(); UnionTypeTree dtt = (UnionTypeTree) path.getLeaf(); CompilationController controller = env.getController(); TokenSequence<JavaTokenId> last = findLastNonWhitespaceToken(env, dtt, env.getOffset()); if (last != null && last.token().id() == JavaTokenId.BAR) { if (!options.contains(Options.ALL_COMPLETION)) { TreeUtilities tu = controller.getTreeUtilities(); TreePath tryPath = tu.getPathElementOfKind(Tree.Kind.TRY, path); Set<TypeMirror> exs = tu.getUncaughtExceptions(tryPath); if (!exs.isEmpty()) { Trees trees = controller.getTrees(); Types types = controller.getTypes(); for (Tree t : dtt.getTypeAlternatives()) { TypeMirror tm = trees.getTypeMirror(new TreePath(path, t)); if (tm != null && tm.getKind() != TypeKind.ERROR) { for (Iterator<TypeMirror> it = exs.iterator(); it.hasNext();) { Elements elements = controller.getElements(); for (TypeMirror ex : exs) { if (ex.getKind() == TypeKind.DECLARED && startsWith(env, ((DeclaredType) ex).asElement().getSimpleName().toString()) && (Utilities.isShowDeprecatedMembers() || !elements.isDeprecated(((DeclaredType) ex).asElement())) && !Utilities.isExcluded(((TypeElement)((DeclaredType) ex).asElement()).getQualifiedName())) { env.addToExcludes(((DeclaredType) ex).asElement()); results.add(itemFactory.createTypeItem(env.getController(), (TypeElement) ((DeclaredType) ex).asElement(), (DeclaredType) ex, anchorOffset, env.getReferencesCount(), elements.isDeprecated(((DeclaredType) ex).asElement()), false, false, false, true, false)); TypeElement te = controller.getElements().getTypeElement("java.lang.Throwable"); //NOI18N if (te != null) { addTypes(env, EnumSet.of(CLASS, INTERFACE, TYPE_PARAMETER), controller.getTypes().getDeclaredType(te));
private void insideCatch(Env env) throws IOException { TreePath path = env.getPath(); CatchTree ct = (CatchTree) path.getLeaf(); CompilationController controller = env.getController(); TokenSequence<JavaTokenId> last = findLastNonWhitespaceToken(env, ct, env.getOffset()); if (last != null && last.token().id() == JavaTokenId.LPAREN) { addKeyword(env, FINAL_KEYWORD, SPACE, false); if (!options.contains(Options.ALL_COMPLETION)) { TreeUtilities tu = controller.getTreeUtilities(); TreePath tryPath = tu.getPathElementOfKind(Tree.Kind.TRY, path); Set<TypeMirror> exs = tu.getUncaughtExceptions(tryPath != null ? tryPath : path.getParentPath()); Elements elements = controller.getElements(); for (TypeMirror ex : exs) { if (ex.getKind() == TypeKind.DECLARED && startsWith(env, ((DeclaredType) ex).asElement().getSimpleName().toString()) && (Utilities.isShowDeprecatedMembers() || !elements.isDeprecated(((DeclaredType) ex).asElement())) && !Utilities.isExcluded(((TypeElement)((DeclaredType) ex).asElement()).getQualifiedName())) { env.addToExcludes(((DeclaredType) ex).asElement()); results.add(itemFactory.createTypeItem(env.getController(), (TypeElement) ((DeclaredType) ex).asElement(), (DeclaredType) ex, anchorOffset, env.getReferencesCount(), elements.isDeprecated(((DeclaredType) ex).asElement()), false, false, false, true, false)); } } } TypeElement te = controller.getElements().getTypeElement("java.lang.Throwable"); //NOI18N if (te != null) { addTypes(env, EnumSet.of(CLASS, INTERFACE, TYPE_PARAMETER), controller.getTypes().getDeclaredType(te)); } } }
public void run(CompilationController control) throws Exception { if (JavaSource.Phase.ELEMENTS_RESOLVED.compareTo(control.toPhase(JavaSource.Phase.ELEMENTS_RESOLVED))<=0) { Elements elements = control.getElements(); Trees trees = control.getTrees(); Types types = control.getTypes(); TypeElement applet = elements.getTypeElement("java.applet.Applet"); //NOI18N TypeElement japplet = elements.getTypeElement("javax.swing.JApplet"); //NOI18N CompilationUnitTree cu = control.getCompilationUnit(); List<? extends Tree> topLevels = cu.getTypeDecls(); for (Tree topLevel : topLevels) { if (topLevel.getKind() == Tree.Kind.CLASS) { TypeElement type = (TypeElement) trees.getElement(TreePath.getPath(cu, topLevel)); if (type != null) { Set<Modifier> modifiers = type.getModifiers(); if (modifiers.contains(Modifier.PUBLIC) && ((applet != null && types.isSubtype(type.asType(), applet.asType())) || (japplet != null && types.isSubtype(type.asType(), japplet.asType())))) { result[0] = true; break; } } } } } }
private void initMethods(TypeElement typeElement) { methods = new HashMap<String, RestMethodDescriptionImpl>(); for (Element element : typeElement.getEnclosedElements()) { if (element!= null && element.getKind() == ElementKind.METHOD) { addMethod(element); } } TypeMirror superclass = typeElement.getSuperclass(); if (superclass != null && !"java.lan.Object".equals(superclass.toString())) { CompilationController controller = getHelper().getCompilationController(); TypeElement superClassEl = (TypeElement)controller.getTypes().asElement( superclass ); for (Element element : superClassEl.getEnclosedElements()) { if (element!= null && element.getKind() == ElementKind.METHOD) { addMethod(element); } } } }
@Override public void run(ResultIterator resultIterator) throws Exception { Result res = resultIterator.getParserResult(offset); if (res == null) { return; } CompilationController controller = CompilationController.get(res); if (controller == null || controller.toPhase(Phase.RESOLVED).compareTo(Phase.RESOLVED) < 0) { return; } TreePath path = controller.getTreeUtilities().pathFor(offset); javax.lang.model.element.Element elem = controller.getTrees().getElement(path); ElementKind kind = elem.getKind(); if (kind == ElementKind.CLASS || kind == ElementKind.ENUM || kind == ElementKind.ANNOTATION_TYPE) { result[0] = elem.asType().toString(); } } });
static boolean isViewClass(ClassTree classT, CompilationController controller) { Trees trees = controller.getTrees(); TreePath classTPath = trees.getPath(controller.getCompilationUnit(), classT); TypeElement classEl = (TypeElement) trees.getElement(classTPath); TypeElement appEl = controller.getElements().getTypeElement("org.jdesktop.application.View"); // NOI18N Types types = controller.getTypes(); TypeMirror tm1 = types.erasure(classEl.asType()); TypeMirror tm2 = types.erasure(appEl.asType()); return types.isSubtype(tm1, tm2); }
protected boolean isSerializable( TypeMirror type, WebBeansModel model ) { TypeElement serializable = model.getCompilationController().getElements(). getTypeElement(Serializable.class.getCanonicalName()); if ( serializable == null ){ return true; } TypeMirror serializableType = serializable.asType(); if ( serializableType == null || serializableType.getKind() == TypeKind.ERROR){ return true; } return model.getCompilationController().getTypes().isSubtype(type, serializableType); }
static void fillElementType( TypeMirror typeMirror, StringBuilder shortName, StringBuilder fqnName , CompilationController controller) { if ( typeMirror.getKind().isPrimitive()){ shortName.append( typeMirror.getKind().toString().toLowerCase()); fqnName.append( shortName ); return; } if ( typeMirror.getKind() == TypeKind.ARRAY ){ fillArrayType( typeMirror , shortName, fqnName , controller ); shortName = shortName.append("[]"); // NOI18N fqnName = fqnName.append("[]"); // NOI18N } Element element = controller.getTypes().asElement( typeMirror ); if ( element != null ){ fqnName.append( (element instanceof TypeElement )? ((TypeElement)element).getQualifiedName().toString() : element.getSimpleName().toString()); shortName.append(element.getSimpleName().toString()); } }
@Override public void run(CompilationController ci) throws Exception { if (ci.toPhase(Phase.RESOLVED).compareTo(Phase.RESOLVED) < 0) {//TODO: ELEMENTS_RESOLVED may be sufficient ErrorManager.getDefault().log(ErrorManager.WARNING, "Unable to resolve "+ci.getFileObject()+" to phase "+Phase.RESOLVED+", current phase = "+ci.getPhase()+ "\nDiagnostics = "+ci.getDiagnostics()+ "\nFree memory = "+Runtime.getRuntime().freeMemory()); return; String text = ci.getText(); int l = text.length(); char c = 0; TreePath path = ci.getTreeUtilities().pathFor(offset); Tree tree; do { tree = path.getLeaf(); if (!TreeUtilities.CLASS_TREE_KINDS.contains(tree.getKind())) { path = path.getParentPath(); if (path == null) { break; if (TreeUtilities.CLASS_TREE_KINDS.contains(tree.getKind())) { SourcePositions positions = ci.getTrees().getSourcePositions(); int pos = (int) positions.getStartPosition(ci.getCompilationUnit(), tree); if (pos == Diagnostic.NOPOS) { return ; // We do not know where we are! int hend = getHeaderEnd((ClassTree) tree, positions, ci.getCompilationUnit()); if (hend > 0) {