Package org.eclipse.jdt.core.dom

Examples of org.eclipse.jdt.core.dom.Annotation


        final Collection annotationCollection = new LinkedHashSet();
        for (final Iterator mit = originalFieldDeclaration.modifiers()
            .iterator(); mit.hasNext();) {
          final Object o = mit.next();
          if (o instanceof Annotation) {
            final Annotation oldAnnotation = (Annotation) o;
            final Annotation newAnnotation = (Annotation) ASTNode
                .copySubtree(ast, oldAnnotation);
            annotationToQualifiedNameMap.put(newAnnotation,
                oldAnnotation.resolveTypeBinding()
                    .getQualifiedName());
            annotationCollection.add(newAnnotation);
          }
        }

        // Get the javadoc.
        final Javadoc originalJavadoc = originalFieldDeclaration
            .getJavadoc();
        final Javadoc newJavadoc = (Javadoc) ASTNode.copySubtree(ast,
            originalJavadoc);

        final EnumConstantDeclaration constDecl = createNewEnumConstantDeclarataion(
            ast, ast.newSimpleName(constantField.getElementName()),
            newJavadoc, annotationCollection);

        newEnumConstantToOldConstantFieldMap.put(constDecl, constantField);
        enumConstantDeclarationCollection.add(constDecl);
      }

      // Get the consistent access modifier of the enum constants.
      final int flag = Util.getConsistentVisibility(constants);
      /*******************************************************************
       * * TODO: Need condition check here: 1. If enum is in its own file
       * then only public and package default are allowed. 2. Else, if
       * enum is embedded in another type, then all visibilities are
       * allowed, but may need more checking here for private!.
       ******************************************************************/
      if (!(Flags.isPublic(flag) || Flags.isPackageDefault(flag)))
        status
            .addFatalError(Messages.ConvertConstantsToEnumRefactoring_EnumTypeMustHaveCorrectVisibility);

      EnumDeclaration newEnumDeclaration = null;
      // only add modifier if it is not package default.
      if (!Flags.isPackageDefault(flag)) {
        final Modifier newModifier = ast
            .newModifier(Modifier.ModifierKeyword
                .fromFlagValue(flag));

        newEnumDeclaration = createNewEnumDeclaration(ast, ast
            .newSimpleName((String) this.simpleTypeNames.get(col)),
            enumConstantDeclarationCollection,
            new Object[] { newModifier });
      } else
        newEnumDeclaration = createNewEnumDeclaration(ast, ast
            .newSimpleName((String) this.simpleTypeNames.get(col)),
            enumConstantDeclarationCollection, new Object[] {});

      // TODO [bm] pretty dirty hack to workaround 16: Refactoring should not use UI components for code changes
      //       http://code.google.com/p/constants-to-enum-eclipse-plugin/issues/detail?id=16
      final NewEnumWizardPage[] result = new NewEnumWizardPage[1];
      Display.getDefault().syncExec(new Runnable() {
        public void run() {
          result[0]= new NewEnumWizardPage();
        }
      });
      NewEnumWizardPage page = result[0];
      page.setTypeName((String) this.simpleTypeNames.get(col), false);

      final IPackageFragmentRoot root = this.getPackageFragmentRoot();
      page.setPackageFragmentRoot(root, false);

      final IPackageFragment pack = this.getPackageFragment(
          (String) this.packageNames.get(col), monitor);
      page.setPackageFragment(pack, false);

      /*******************************************************************
       * * TODO: This is somewhat of a dirty workaround. Basically, I am
       * creating a new Enum type only to replace the root AST node. If
       * you have any better ideas please let me know!
       ******************************************************************/
      /*******************************************************************
       * TODO: Need a way of inserting this new type such that it appears
       * in the text changes for rollback purposes, etc.
       ******************************************************************/
      try {
        page.createType(monitor);
      } catch (final InterruptedException E) {
        status.addFatalError(E.getMessage());
      }

      // Modify the newly created enum type.
      final IType newEnumType = page.getCreatedType();
      final CompilationUnit node = (CompilationUnit) Util.getASTNode(
          newEnumType, monitor);

      final ASTRewrite astRewrite = ASTRewrite.create(node.getAST());
      final ImportRewrite importRewrite = ImportRewrite
          .create(node, true);

      final EnumDeclaration oldEnumDeclaration = (EnumDeclaration) node
          .types().get(0);

      // Add imports for annotations to the enum constants.
      for (final Iterator eit = newEnumDeclaration.enumConstants()
          .iterator(); eit.hasNext();) {
        final Object obj = eit.next();
        final EnumConstantDeclaration ecd = (EnumConstantDeclaration) obj;
        for (final Iterator emit = ecd.modifiers().iterator(); emit
            .hasNext();) {
          final Object o = emit.next();
          if (o instanceof Annotation) {
            final Annotation anno = (Annotation) o;
            final String newName = importRewrite
                .addImport((String) annotationToQualifiedNameMap
                    .get(anno));
            anno.setTypeName(ast.newName(newName));
          }
        }
      }
      /*
       * TODO: Need to remove resulting unused imports, but I am unsure of
View Full Code Here


   * @return <code>true</code> if given {@link FieldDeclaration} is "@UiField".
   */
  public static boolean isBinderField(FieldDeclaration fieldDeclaration) {
    for (IExtendedModifier modifier : DomGenerics.modifiers(fieldDeclaration)) {
      if (modifier instanceof Annotation) {
        Annotation annotation = (Annotation) modifier;
        if (isBinderAnnotation(annotation)) {
          return true;
        }
      }
    }
View Full Code Here

     *         such member), or
     *         a simple <tt>null</tt> if there is no annotation.
     */
    protected Object evaluateMemberAsExpression(Object object, String memberName) {
        AbstractNode node = (AbstractNode)object;
        Annotation annotation = annotation(node);
        if (annotation == null) {
            return nullForThisKind();
        }
        if (annotation instanceof MarkerAnnotation && "value".equals(memberName)) {
            return QualifiedNameValue.DEFAULT_VALUE;
View Full Code Here

      addMarkerAnnotation(compilationUnit, (SingleVariableDeclaration)declaration);
    }
  }

  private void addMarkerAnnotation(ICompilationUnit compilationUnit, BodyDeclaration declaration) throws MalformedTreeException, BadLocationException, CoreException {
    Annotation annotation =
      ASTTools.annotation(declaration, getAnnotationUnqualifiedName());
    if (annotation != null) {
      return;
    }
   
    AST ast = declaration.getAST();
   
    annotation = AstUtils.createMarkerAnnotation(
      ast, getAnnotationFullyQualifiedName());
    annotation.setSourceRange(
        AstUtils.calculateOffset(declaration, true).offset,
        annotation.getLength());
   
    ImportDeclaration importDeclaration =
      AstUtils.createImportStatement(ast, getAnnotationFullyQualifiedName());
   
    AstUtils.rewriteAddFirst(compilationUnit, declaration, annotation, importDeclaration);
View Full Code Here

   
    AstUtils.rewriteAddFirst(compilationUnit, declaration, annotation, importDeclaration);
  }
 
  private void addMarkerAnnotation(ICompilationUnit compilationUnit, SingleVariableDeclaration declaration) throws MalformedTreeException, BadLocationException, CoreException {
    Annotation annotation =
      ASTTools.annotation(declaration, getAnnotationUnqualifiedName());
    if (annotation != null) {
      return;
    }
   
    AST ast = declaration.getAST();
   
    annotation = AstUtils.createMarkerAnnotation(
      ast, getAnnotationFullyQualifiedName());
    annotation.setSourceRange(
        AstUtils.calculateOffset(declaration).offset,
        annotation.getLength());
   
    ImportDeclaration importDeclaration =
      AstUtils.createImportStatement(ast, getAnnotationFullyQualifiedName());
   
    AstUtils.rewriteAddFirst(compilationUnit, declaration, annotation, importDeclaration);
View Full Code Here

    if (annotationExists(declaration)) {
      return;
    }
    AST ast = declaration.getAST();
    Annotation annotation = AstUtils.createSingleMemberAnnotation(
            ast, getAnnotationFullyQualifiedName(), value);
    annotation.setSourceRange(
        AstUtils.calculateOffset(declaration, true).offset,
        annotation.getLength());
   
    ImportDeclaration importDeclaration =
      AstUtils.createImportStatement(ast, getAnnotationFullyQualifiedName());
   
    AstUtils.rewriteAddFirst(compilationUnit, declaration, annotation, importDeclaration);
View Full Code Here

    if (annotationExists(declaration)) {
      return;
    }
    AST ast = declaration.getAST();
    Annotation annotation = AstUtils.createSingleMemberAnnotation(
            ast, getAnnotationFullyQualifiedName(), value);
    annotation.setSourceRange(
        AstUtils.calculateOffset(declaration).offset,
        annotation.getLength());
   
    ImportDeclaration importDeclaration =
      AstUtils.createImportStatement(ast, getAnnotationFullyQualifiedName());
   
    AstUtils.rewriteAddFirst(compilationUnit, declaration, annotation, importDeclaration);
View Full Code Here

    }
    throw new IllegalArgumentException("Unsupported ASTNode - only BodyDeclaration and SingleVariableDeclaration are supported.");
  }

  private Annotation annotation(BodyDeclaration declaration) {
    Annotation annotation =
      ASTTools.annotation(declaration, getAnnotationUnqualifiedName());
    if (annotation == null) {
      annotation =
        ASTTools.annotation(declaration, getAnnotationFullyQualifiedName());
    }
View Full Code Here

      return null;
    }
    return Generics.asT(annotation);
  }
  private Annotation annotation(SingleVariableDeclaration declaration) {
    Annotation annotation =
      ASTTools.annotation(declaration, getAnnotationUnqualifiedName());
    if (annotation == null) {
      annotation =
        ASTTools.annotation(declaration, getAnnotationFullyQualifiedName());
    }
View Full Code Here

    }
    return Generics.asT(annotation);
  }

  protected <T extends Annotation> T annotation(BodyDeclaration declaration, Class<T> requiredType) {
    Annotation annotation = annotation(declaration);
    if (annotation == null) {
      return null;
    }
    if (!requiredType.isAssignableFrom(annotation.getClass())) {
      return null;
    }
    return Generics.asT(annotation);
  }
View Full Code Here

TOP

Related Classes of org.eclipse.jdt.core.dom.Annotation

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.