ASTRewrite Event Frage

KingSagat

Grünschnabel
So, folgendes Szenario: ich will die Properties an Methoden rausschmeißen.
Wenn ich direkt auf dem Node das delete aufrufe bekommt mein ListRewrite das auch mit, aber beim rewriteAST wird es leider nichtmehr berücksichtigt. Bei den imports klappt das super, aber da ruf ich auch direkt "importLRW.remove( id, null )" auf dem ListRewrite auf. Das geht hier ja nicht, weil es alles geschachtelt ist.
Ich nehm mal an, dass ich da ein bestimmtes RemoveEvent anlegen muss, aber welches und wie genau.

Code:
            d = new Document( unit.getSource() );

            ASTParser parser = ASTParser.newParser( AST.JLS3 );
            parser.setSource( unit );
            CompilationUnit cu = (CompilationUnit) parser.createAST( null );

            AST ast = cu.getAST();

            ASTRewrite rewriter = ASTRewrite.create( cu.getAST() );

            ListRewrite typesLRW = rewriter.getListRewrite( cu, CompilationUnit.TYPES_PROPERTY );

            for (TypeDeclaration td : (List<TypeDeclaration>) typesLRW.getOriginalList())
            {
                for (Object o : td.bodyDeclarations())
                {
                    if (o instanceof FieldDeclaration)
                    {
                        FieldDeclaration fd = (FieldDeclaration) o;
                    }
                    else if (o instanceof MethodDeclaration)
                    {
                        MethodDeclaration md = (MethodDeclaration) o;
                        List<ASTNode> list = md.modifiers();
                        for (ASTNode node : list)
                        {
                            if (node instanceof Annotation)
                            {
                                if ("Property".equals( ((Annotation) node).getTypeName().toString() ))
                                {
                                    node.delete();
                                }
                            }
                        }
                    }
                }
            }

           TextEdit te = rewriter.rewriteAST( d, null );
            te.apply( d );
            System.out.println( d.get() );
 
Zurück