KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > api > java > source > gen > BodyStatementTest


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19 package org.netbeans.api.java.source.gen;
20
21 import java.io.File JavaDoc;
22 import java.util.Collections JavaDoc;
23 import com.sun.source.tree.*;
24 import java.io.IOException JavaDoc;
25 import javax.lang.model.element.Modifier;
26 import javax.lang.model.type.TypeKind;
27 import org.netbeans.api.java.source.CancellableTask;
28 import org.netbeans.api.java.source.JavaSource;
29 import static org.netbeans.api.java.source.JavaSource.*;
30 import org.netbeans.api.java.source.TestUtilities;
31 import org.netbeans.api.java.source.TreeMaker;
32 import org.netbeans.api.java.source.WorkingCopy;
33 import org.netbeans.junit.NbTestSuite;
34 import org.openide.filesystems.FileUtil;
35
36 /**
37  * Test class add couple of body statements. It test statements creation and
38  * addition to body.
39  *
40  * @author Pavel Flaska
41  */

42 public class BodyStatementTest extends GeneratorTestMDRCompat {
43     
44     /** Creates a new instance of BodyStatementTest */
45     public BodyStatementTest(String JavaDoc name) {
46         super(name);
47     }
48     
49     public static NbTestSuite suite() {
50         NbTestSuite suite = new NbTestSuite();
51         suite.addTestSuite(BodyStatementTest.class);
52 // suite.addTest(new BodyStatementTest("testNullLiteral"));
53
// suite.addTest(new BodyStatementTest("testBooleanLiteral"));
54
// suite.addTest(new BodyStatementTest("testRenameInIfStatement"));
55
// suite.addTest(new BodyStatementTest("testRenameInLocalDecl"));
56
// suite.addTest(new BodyStatementTest("testRenameInInvocationPars"));
57
// suite.addTest(new BodyStatementTest("testAddMethodToAnnInTry"));
58
// suite.addTest(new BodyStatementTest("testReturnNotDoubled"));
59
// suite.addTest(new BodyStatementTest("testForNotRegen"));
60
// suite.addTest(new BodyStatementTest("testAssignLeft"));
61
// suite.addTest(new BodyStatementTest("testAssignRight"));
62
// suite.addTest(new BodyStatementTest("testAssignBoth"));
63
// suite.addTest(new BodyStatementTest("testReturn"));
64
// suite.addTest(new BodyStatementTest("testPlusBinary"));
65
// suite.addTest(new BodyStatementTest("testRenameInWhile"));
66
// suite.addTest(new BodyStatementTest("testRenameInDoWhile"));
67
// suite.addTest(new BodyStatementTest("testRenameInForEach"));
68
// suite.addTest(new BodyStatementTest("testRenameInSyncro"));
69
// suite.addTest(new BodyStatementTest("testRenameInCatch"));
70
// suite.addTest(new BodyStatementTest("testRenameInAssignOp"));
71
// suite.addTest(new BodyStatementTest("testRenameInArrayIndex"));
72
// suite.addTest(new BodyStatementTest("testRenameInTypeCast"));
73
// suite.addTest(new BodyStatementTest("testRenameInAssert"));
74
// suite.addTest(new BodyStatementTest("testRenameInThrowSt"));
75
// suite.addTest(new BodyStatementTest("testRenameInConditional"));
76
// suite.addTest(new BodyStatementTest("testRenameInLabelled"));
77
// suite.addTest(new BodyStatementTest("testRenameInContinue"));
78
// suite.addTest(new BodyStatementTest("testRenameInBreak"));
79
// suite.addTest(new BodyStatementTest("testRenameLocVarTypePar"));
80
// suite.addTest(new BodyStatementTest("testRenameInSwitch"));
81
// suite.addTest(new BodyStatementTest("testRenameInTypeNewArr"));
82
// suite.addTest(new BodyStatementTest("testRenameInTypeTest"));
83
// suite.addTest(new BodyStatementTest("testRenameInTypeTestII"));
84
// suite.addTest(new BodyStatementTest("testChangeLiteral"));
85
// suite.addTest(new BodyStatementTest("testRenameInArrInit"));
86
// suite.addTest(new BodyStatementTest("testRenameClazz"));
87
// suite.addTest(new BodyStatementTest("testRenameInCase"));
88
return suite;
89     }
90     
91     /**
92      * Adds 'System.err.println(null);' statement to the method body.
93      */

94     public void testNullLiteral() throws Exception JavaDoc {
95         testFile = new File JavaDoc(getWorkDir(), "Test.java");
96         TestUtilities.copyStringToFile(testFile,
97             "package hierbas.del.litoral;\n\n" +
98             "import java.io.*;\n\n" +
99             "public class Test {\n" +
100             " public void taragui() {\n" +
101             " ;\n" +
102             " }\n" +
103             "}\n"
104             );
105         String JavaDoc golden =
106             "package hierbas.del.litoral;\n\n" +
107             "import java.io.*;\n\n" +
108             "public class Test {\n" +
109             " public void taragui() {\n" +
110             " ;\n" +
111             " System.err.println(null);\n" +
112             "}\n" +
113             "}\n";
114         JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
115         CancellableTask task = new CancellableTask<WorkingCopy>() {
116
117             public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
118                 workingCopy.toPhase(Phase.RESOLVED);
119                 TreeMaker make = workingCopy.getTreeMaker();
120                 
121                 // finally, find the correct body and rewrite it.
122
ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
123                 MethodTree method = (MethodTree) clazz.getMembers().get(1);
124                 ExpressionStatementTree statement = make.ExpressionStatement(
125                     make.MethodInvocation(
126                         Collections.<ExpressionTree>emptyList(),
127                         make.MemberSelect(
128                             make.MemberSelect(
129                                 make.Identifier("System"),
130                                 "err"
131                             ),
132                             "println"
133                         ),
134                         Collections.singletonList(
135                             make.Literal(null)
136                         )
137                     )
138                 );
139                 BlockTree copy = make.addBlockStatement(method.getBody(), statement);
140                 workingCopy.rewrite(method.getBody(), copy);
141             }
142             
143             public void cancel() {
144             }
145         };
146         testSource.runModificationTask(task).commit();
147         String JavaDoc res = TestUtilities.copyFileToString(testFile);
148         System.err.println(res);
149         assertEquals(golden, res);
150     }
151     
152     /**
153      * Adds 'System.err.println(true);' statement to the method body.
154      */

155     public void testBooleanLiteral() throws Exception JavaDoc {
156         testFile = new File JavaDoc(getWorkDir(), "Test.java");
157         TestUtilities.copyStringToFile(testFile,
158             "package hierbas.del.litoral;\n\n" +
159             "import java.io.*;\n\n" +
160             "public class Test {\n" +
161             " public void taragui() {\n" +
162             " ;\n" +
163             " }\n" +
164             "}\n"
165             );
166         String JavaDoc golden =
167             "package hierbas.del.litoral;\n\n" +
168             "import java.io.*;\n\n" +
169             "public class Test {\n" +
170             " public void taragui() {\n" +
171             " ;\n" +
172             " System.err.println(true);\n" +
173             "}\n" +
174             "}\n";
175         JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
176         CancellableTask task = new CancellableTask<WorkingCopy>() {
177
178             public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
179                 workingCopy.toPhase(Phase.RESOLVED);
180                 TreeMaker make = workingCopy.getTreeMaker();
181                 
182                 // finally, find the correct body and rewrite it.
183
ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
184                 MethodTree method = (MethodTree) clazz.getMembers().get(1);
185                 ExpressionStatementTree statement = make.ExpressionStatement(
186                     make.MethodInvocation(
187                         Collections.<ExpressionTree>emptyList(),
188                         make.MemberSelect(
189                             make.MemberSelect(
190                                 make.Identifier("System"),
191                                 "err"
192                             ),
193                             "println"
194                         ),
195                         Collections.singletonList(
196                             make.Literal(Boolean.TRUE)
197                         )
198                     )
199                 );
200                 BlockTree copy = make.addBlockStatement(method.getBody(), statement);
201                 workingCopy.rewrite(method.getBody(), copy);
202             }
203             
204             public void cancel() {
205             }
206         };
207         testSource.runModificationTask(task).commit();
208         String JavaDoc res = TestUtilities.copyFileToString(testFile);
209         System.err.println(res);
210         assertEquals(golden, res);
211     }
212     
213     /**
214      * Renames el to element in method parameter and if statement
215      */

216     public void testRenameInIfStatement() throws Exception JavaDoc {
217         testFile = new File JavaDoc(getWorkDir(), "Test.java");
218         TestUtilities.copyStringToFile(testFile,
219             "package personal;\n" +
220             "\n" +
221             "import javax.swing.text.Element;\n" +
222             "\n" +
223             "public class Test {\n" +
224             " public void action666(Element el) {\n" +
225             " if (el.getName().equalsIgnoreCase(\"flaskuvElement\")) {\n" +
226             " System.err.println(\"Win!\");\n" +
227             " }\n" +
228             " }\n" +
229             "}\n");
230         String JavaDoc golden =
231             "package personal;\n" +
232             "\n" +
233             "import javax.swing.text.Element;\n" +
234             "\n" +
235             "public class Test {\n" +
236             " public void action666(Element element) {\n" +
237             " if (element.getName().equalsIgnoreCase(\"flaskuvElement\")) {\n" +
238             " System.err.println(\"Win!\");\n" +
239             " }\n" +
240             " }\n" +
241             "}\n";
242         JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
243         CancellableTask task = new CancellableTask<WorkingCopy>() {
244
245             public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
246                 workingCopy.toPhase(Phase.RESOLVED);
247                 TreeMaker make = workingCopy.getTreeMaker();
248                 ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
249                 MethodTree method = (MethodTree) clazz.getMembers().get(1);
250                 // rename in parameter
251
VariableTree vt = method.getParameters().get(0);
252                 VariableTree parCopy = make.setLabel(vt, "element");
253                 workingCopy.rewrite(vt, parCopy);
254                 // no need to check kind
255
// rename in if
256
IfTree statementTree = (IfTree) method.getBody().getStatements().get(0);
257                 ParenthesizedTree condition = (ParenthesizedTree) statementTree.getCondition();
258                 MethodInvocationTree invocation = (MethodInvocationTree) condition.getExpression();
259                 MemberSelectTree select = (MemberSelectTree) invocation.getMethodSelect();
260                 invocation = (MethodInvocationTree) select.getExpression();
261                 select = (MemberSelectTree) invocation.getMethodSelect();
262                 IdentifierTree identToRename = (IdentifierTree) select.getExpression();
263                 IdentifierTree copy = make.setLabel(identToRename, "element");
264                 workingCopy.rewrite(identToRename, copy);
265             }
266             
267             public void cancel() {
268             }
269         };
270         testSource.runModificationTask(task).commit();
271         String JavaDoc res = TestUtilities.copyFileToString(testFile);
272         System.err.println(res);
273         assertEquals(golden, res);
274     }
275     
276     /**
277      * Renames el to element in method parameter and if statement
278      */

279     public void testRenameInLocalDecl() throws Exception JavaDoc {
280         testFile = new File JavaDoc(getWorkDir(), "Test.java");
281         TestUtilities.copyStringToFile(testFile,
282             "package personal;\n" +
283             "\n" +
284             "import javax.swing.text.Element;\n" +
285             "\n" +
286             "public class Test {\n" +
287             " public void action666(Element el) {\n" +
288             " String name = el.getName();\n" +
289             " }\n" +
290             "}\n");
291         String JavaDoc golden =
292             "package personal;\n" +
293             "\n" +
294             "import javax.swing.text.Element;\n" +
295             "\n" +
296             "public class Test {\n" +
297             " public void action666(Element element) {\n" +
298             " String name = element.getName();\n" +
299             " }\n" +
300             "}\n";
301         JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
302         CancellableTask task = new CancellableTask<WorkingCopy>() {
303
304             public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
305                 workingCopy.toPhase(Phase.RESOLVED);
306                 TreeMaker make = workingCopy.getTreeMaker();
307                 ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
308                 MethodTree method = (MethodTree) clazz.getMembers().get(1);
309                 // rename in parameter
310
VariableTree vt = method.getParameters().get(0);
311                 VariableTree parCopy = make.setLabel(vt, "element");
312                 workingCopy.rewrite(vt, parCopy);
313                 // no need to check kind
314
VariableTree statementTree = (VariableTree) method.getBody().getStatements().get(0);
315                 MethodInvocationTree invocation = (MethodInvocationTree) statementTree.getInitializer();
316                 MemberSelectTree select = (MemberSelectTree) invocation.getMethodSelect();
317                 IdentifierTree identToRename = (IdentifierTree) select.getExpression();
318                 IdentifierTree copy = make.setLabel(identToRename, "element");
319                 workingCopy.rewrite(identToRename, copy);
320             }
321             
322             public void cancel() {
323             }
324         };
325         testSource.runModificationTask(task).commit();
326         String JavaDoc res = TestUtilities.copyFileToString(testFile);
327         System.err.println(res);
328         assertEquals(golden, res);
329     }
330     
331     /**
332      * Renames el to element in method parameter and if statement
333      */

334     public void testRenameInInvocationPars() throws Exception JavaDoc {
335         testFile = new File JavaDoc(getWorkDir(), "Test.java");
336         TestUtilities.copyStringToFile(testFile,
337             "package personal;\n" +
338             "\n" +
339             "import javax.swing.text.Element;\n" +
340             "import java.util.Collections;\n" +
341             "\n" +
342             "public class Test {\n" +
343             " public void action666(Element el) {\n" +
344             " Collections.singleton(el);\n" +
345             " }\n" +
346             "}\n");
347         String JavaDoc golden =
348             "package personal;\n" +
349             "\n" +
350             "import javax.swing.text.Element;\n" +
351             "import java.util.Collections;\n" +
352             "\n" +
353             "public class Test {\n" +
354             " public void action666(Element element) {\n" +
355             " Collections.singleton(element);\n" +
356             " }\n" +
357             "}\n";
358         JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
359         CancellableTask task = new CancellableTask<WorkingCopy>() {
360
361             public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
362                 workingCopy.toPhase(Phase.RESOLVED);
363                 TreeMaker make = workingCopy.getTreeMaker();
364                 ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
365                 MethodTree method = (MethodTree) clazz.getMembers().get(1);
366                 // rename in parameter
367
VariableTree vt = method.getParameters().get(0);
368                 VariableTree parCopy = make.setLabel(vt, "element");
369                 workingCopy.rewrite(vt, parCopy);
370                 // no need to check kind
371
// rename in if
372
ExpressionStatementTree expressionStmt = (ExpressionStatementTree) method.getBody().getStatements().get(0);
373                 MethodInvocationTree invocation = (MethodInvocationTree) expressionStmt.getExpression();
374                 IdentifierTree identToRename = (IdentifierTree) invocation.getArguments().get(0);
375                 IdentifierTree copy = make.setLabel(identToRename, "element");
376                 workingCopy.rewrite(identToRename, copy);
377             }
378             
379             public void cancel() {
380             }
381         };
382         testSource.runModificationTask(task).commit();
383         String JavaDoc res = TestUtilities.copyFileToString(testFile);
384         System.err.println(res);
385         assertEquals(golden, res);
386     }
387
388     /**
389      * Adds method to annonymous class declared in try section.
390      */

391     public void testAddMethodToAnnInTry() throws Exception JavaDoc {
392         testFile = new File JavaDoc(getWorkDir(), "Test.java");
393         TestUtilities.copyStringToFile(testFile,
394             "package personal;\n" +
395             "\n" +
396             "import javax.swing.text.Element;\n" +
397             "import java.util.Collections;\n" +
398             "\n" +
399             "public class Test {\n" +
400             " public void method() {\n" +
401             " try {\n" +
402             " new Runnable() {\n" +
403             " };\n" +
404             " } finally {\n" +
405             " System.err.println(\"Got a problem.\");\n" +
406             " }\n" +
407             " }\n" +
408             "}\n" +
409             "}\n");
410
411          String JavaDoc golden =
412             "package personal;\n" +
413             "\n" +
414             "import javax.swing.text.Element;\n" +
415             "import java.util.Collections;\n" +
416             "\n" +
417             "public class Test {\n" +
418             " public void method() {\n" +
419             " try {\n" +
420             " new Runnable() {\n" +
421             " public void run() {\n" +
422             " }\n\n" +
423             " };\n" +
424             " } finally {\n" +
425             " System.err.println(\"Got a problem.\");\n" +
426             " }\n" +
427             " }\n" +
428             "}\n" +
429             "}\n";
430         JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
431         CancellableTask task = new CancellableTask<WorkingCopy>() {
432
433             public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
434                 workingCopy.toPhase(Phase.RESOLVED);
435                 TreeMaker make = workingCopy.getTreeMaker();
436                 ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
437                 MethodTree method = (MethodTree) clazz.getMembers().get(1);
438                 // rename in parameter
439
TryTree tryStmt = (TryTree) method.getBody().getStatements().get(0);
440                 ExpressionStatementTree exprStmt = (ExpressionStatementTree) tryStmt.getBlock().getStatements().get(0);
441                 NewClassTree newClassTree = (NewClassTree) exprStmt.getExpression();
442                 ClassTree anonClassTree = newClassTree.getClassBody();
443                 MethodTree methodToAdd = make.Method(
444                     make.Modifiers(Collections.<Modifier>singleton(Modifier.PUBLIC)),
445                     "run",
446                     make.PrimitiveType(TypeKind.VOID),
447                     Collections.<TypeParameterTree>emptyList(),
448                     Collections.<VariableTree>emptyList(),
449                     Collections.<ExpressionTree>emptyList(),
450                     make.Block(Collections.<StatementTree>emptyList(), false),
451                     null
452                 );
453                 ClassTree copy = make.addClassMember(anonClassTree, methodToAdd);
454                 workingCopy.rewrite(anonClassTree, copy);
455             }
456             
457             public void cancel() {
458             }
459         };
460         testSource.runModificationTask(task).commit();
461         String JavaDoc res = TestUtilities.copyFileToString(testFile);
462         System.err.println(res);
463         assertEquals(golden, res);
464     }
465     
466     /**
467      * Check return statement is not doubled. (#90806)
468      */

469     public void testReturnNotDoubled() throws Exception JavaDoc {
470         testFile = new File JavaDoc(getWorkDir(), "Test.java");
471         TestUtilities.copyStringToFile(testFile,
472             "package personal;\n" +
473             "\n" +
474             "import javax.swing.text.Element;\n" +
475             "import java.util.Collections;\n" +
476             "\n" +
477             "public class Test {\n" +
478             " public Object method() {\n" +
479             " try {\n" +
480             " new Runnable() {\n" +
481             " }\n" +
482             " return null;\n" +
483             " } finally {\n" +
484             " System.err.println(\"Got a problem.\");\n" +
485             " }\n" +
486             " }\n" +
487             "}\n");
488
489          String JavaDoc golden =
490             "package personal;\n" +
491             "\n" +
492             "import javax.swing.text.Element;\n" +
493             "import java.util.Collections;\n" +
494             "\n" +
495             "public class Test {\n" +
496             " public Object method() {\n" +
497             " try {\n" +
498             " new Runnable() {\n" +
499             " public void run() {\n" +
500             " }\n\n" +
501             " }\n" +
502             " return null;\n" +
503             " } finally {\n" +
504             " System.err.println(\"Got a problem.\");\n" +
505             " }\n" +
506             " }\n" +
507             "}\n";
508         JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
509         CancellableTask task = new CancellableTask<WorkingCopy>() {
510
511             public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
512                 workingCopy.toPhase(Phase.RESOLVED);
513                 TreeMaker make = workingCopy.getTreeMaker();
514                 ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
515                 MethodTree method = (MethodTree) clazz.getMembers().get(1);
516                 // rename in parameter
517
TryTree tryStmt = (TryTree) method.getBody().getStatements().get(0);
518                 BlockTree tryBlock = (BlockTree) tryStmt.getBlock();
519                 ExpressionStatementTree exprStmt = (ExpressionStatementTree) tryStmt.getBlock().getStatements().get(0);
520                 NewClassTree newClassTree = (NewClassTree) exprStmt.getExpression();
521                 ClassTree anonClassTree = newClassTree.getClassBody();
522                 MethodTree methodToAdd = make.Method(
523                     make.Modifiers(Collections.<Modifier>singleton(Modifier.PUBLIC)),
524                     "run",
525                     make.PrimitiveType(TypeKind.VOID),
526                     Collections.<TypeParameterTree>emptyList(),
527                     Collections.<VariableTree>emptyList(),
528                     Collections.<ExpressionTree>emptyList(),
529                     make.Block(Collections.<StatementTree>emptyList(), false),
530                     null
531                 );
532                 ClassTree copy = make.addClassMember(anonClassTree, methodToAdd);
533                 workingCopy.rewrite(anonClassTree, copy);
534             }
535             
536             public void cancel() {
537             }
538         };
539         testSource.runModificationTask(task).commit();
540         String JavaDoc res = TestUtilities.copyFileToString(testFile);
541         System.err.println(res);
542         assertEquals(golden, res);
543     }
544     
545     /**
546      * Check 'for' body is not regenerated. (#91061)
547      */

548     public void testForNotRegen() throws Exception JavaDoc {
549         testFile = new File JavaDoc(getWorkDir(), "Test.java");
550         TestUtilities.copyStringToFile(testFile,
551             "package personal;\n" +
552             "\n" +
553             "import javax.swing.text.Element;\n" +
554             "import java.util.Collections;\n" +
555             "\n" +
556             "public class Test {\n" +
557             " public Object method() {\n" +
558             " for (int var2 = 0; var2 < 10; var2++) {\n" +
559             " // comment\n" +
560             " System.out.println(var2); // What a ... comment\n" +
561             " // comment\n" +
562             " List l;\n" +
563             " }\n" +
564             " }\n" +
565             "}\n");
566
567          String JavaDoc golden =
568             "package personal;\n" +
569             "\n" +
570             "import javax.swing.text.Element;\n" +
571             "import java.util.Collections;\n" +
572             "\n" +
573             "public class Test {\n" +
574             " public Object method() {\n" +
575             " for (int newVar = 0; newVar < 10; newVar++) {\n" +
576             " // comment\n" +
577             " System.out.println(newVar); // What a ... comment\n" +
578             " // comment\n" +
579             " List l;\n" +
580             " }\n" +
581             " }\n" +
582             "}\n";
583         JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
584         CancellableTask task = new CancellableTask<WorkingCopy>() {
585
586             public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
587                 workingCopy.toPhase(Phase.RESOLVED);
588                 TreeMaker make = workingCopy.getTreeMaker();
589                 ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
590                 MethodTree method = (MethodTree) clazz.getMembers().get(1);
591                 ForLoopTree forLoop = (ForLoopTree) method.getBody().getStatements().get(0);
592                 // rewrite in initializer
593
VariableTree initalizer = (VariableTree) forLoop.getInitializer().get(0);
594                 workingCopy.rewrite(initalizer, make.setLabel(initalizer, "newVar"));
595                 
596                 // rewrite in condition
597
BinaryTree condition = (BinaryTree) forLoop.getCondition();
598                 IdentifierTree ident = (IdentifierTree) condition.getLeftOperand();
599                 workingCopy.rewrite(ident, make.setLabel(ident, "newVar"));
600                 
601                 ExpressionStatementTree update = (ExpressionStatementTree) forLoop.getUpdate().get(0);
602                 UnaryTree unary = (UnaryTree) update.getExpression();
603                 ident = (IdentifierTree) unary.getExpression();
604                 workingCopy.rewrite(ident, make.setLabel(ident, "newVar"));
605                 
606                 // and finally in the body
607
BlockTree block = (BlockTree) forLoop.getStatement();
608                 ExpressionStatementTree systemOut = (ExpressionStatementTree) block.getStatements().get(0);
609                 MethodInvocationTree mit = (MethodInvocationTree) systemOut.getExpression();
610                 ident = (IdentifierTree) mit.getArguments().get(0);
611                 workingCopy.rewrite(ident, make.setLabel(ident, "newVar"));
612             }
613             
614             public void cancel() {
615             }
616         };
617         testSource.runModificationTask(task).commit();
618         String JavaDoc res = TestUtilities.copyFileToString(testFile);
619         System.err.println(res);
620         assertEquals(golden, res);
621     }
622     
623     /**
624      * #92187: Test for left right side of assignment
625      */

626     public void testAssignLeft() throws Exception JavaDoc {
627         testFile = new File JavaDoc(getWorkDir(), "Test.java");
628         TestUtilities.copyStringToFile(testFile,
629             "package personal;\n" +
630             "\n" +
631             "public class Test {\n" +
632             " public Object method() {\n" +
633             " this.key = key;\n" +
634             " }\n" +
635             "}\n");
636
637          String JavaDoc golden =
638             "package personal;\n" +
639             "\n" +
640             "public class Test {\n" +
641             " public Object method() {\n" +
642             " this.key2 = key;\n" +
643             " }\n" +
644             "}\n";
645         JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
646         CancellableTask task = new CancellableTask<WorkingCopy>() {
647
648             public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
649                 workingCopy.toPhase(Phase.RESOLVED);
650                 TreeMaker make = workingCopy.getTreeMaker();
651                 ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
652                 MethodTree method = (MethodTree) clazz.getMembers().get(1);
653                 ExpressionStatementTree est = (ExpressionStatementTree) method.getBody().getStatements().get(0);
654                 AssignmentTree assignment = (AssignmentTree) est.getExpression();
655                 MemberSelectTree mstCopy = make.setLabel((MemberSelectTree) assignment.getVariable(), "key2");
656                 workingCopy.rewrite(assignment.getVariable(), mstCopy);
657             }
658             
659             public void cancel() {
660             }
661         };
662         testSource.runModificationTask(task).commit();
663         String JavaDoc res = TestUtilities.copyFileToString(testFile);
664         System.err.println(res);
665         assertEquals(golden, res);
666     }
667     
668     /**
669      * #92187: Test for right side of assignment
670      */

671     public void testAssignRight() throws Exception JavaDoc {
672         testFile = new File JavaDoc(getWorkDir(), "Test.java");
673         TestUtilities.copyStringToFile(testFile,
674             "package personal;\n" +
675             "\n" +
676             "public class Test {\n" +
677             " public Object method() {\n" +
678             " this.key = key;\n" +
679             " }\n" +
680             "}\n");
681
682          String JavaDoc golden =
683             "package personal;\n" +
684             "\n" +
685             "public class Test {\n" +
686             " public Object method() {\n" +
687             " this.key = key2;\n" +
688             " }\n" +
689             "}\n";
690         JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
691         CancellableTask task = new CancellableTask<WorkingCopy>() {
692
693             public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
694                 workingCopy.toPhase(Phase.RESOLVED);
695                 TreeMaker make = workingCopy.getTreeMaker();
696                 ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
697                 MethodTree method = (MethodTree) clazz.getMembers().get(1);
698                 ExpressionStatementTree est = (ExpressionStatementTree) method.getBody().getStatements().get(0);
699                 AssignmentTree assignment = (AssignmentTree) est.getExpression();
700                 IdentifierTree copy = make.setLabel((IdentifierTree) assignment.getExpression(), "key2");
701                 workingCopy.rewrite(assignment.getExpression(), copy);
702             }
703             
704             public void cancel() {
705             }
706         };
707         testSource.runModificationTask(task).commit();
708         String JavaDoc res = TestUtilities.copyFileToString(testFile);
709         System.err.println(res);
710         assertEquals(golden, res);
711     }
712     
713     /**
714      * #92187: Test for right side of assignment
715      */

716     public void testAssignBoth() throws Exception JavaDoc {
717         testFile = new File JavaDoc(getWorkDir(), "Test.java");
718         TestUtilities.copyStringToFile(testFile,
719             "package personal;\n" +
720             "\n" +
721             "public class Test {\n" +
722             " public Object method() {\n" +
723             " this.key = key;\n" +
724             " }\n" +
725             "}\n");
726
727          String JavaDoc golden =
728             "package personal;\n" +
729             "\n" +
730             "public class Test {\n" +
731             " public Object method() {\n" +
732             " this.key2 = key2;\n" +
733             " }\n" +
734             "}\n";
735         JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
736         CancellableTask task = new CancellableTask<WorkingCopy>() {
737
738             public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
739                 workingCopy.toPhase(Phase.RESOLVED);
740                 TreeMaker make = workingCopy.getTreeMaker();
741                 ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
742                 MethodTree method = (MethodTree) clazz.getMembers().get(1);
743                 ExpressionStatementTree est = (ExpressionStatementTree) method.getBody().getStatements().get(0);
744                 AssignmentTree assignment = (AssignmentTree) est.getExpression();
745                 MemberSelectTree mstCopy = make.setLabel((MemberSelectTree) assignment.getVariable(), "key2");
746                 workingCopy.rewrite(assignment.getVariable(), mstCopy);
747                 IdentifierTree copy = make.setLabel((IdentifierTree) assignment.getExpression(), "key2");
748                 workingCopy.rewrite(assignment.getExpression(), copy);
749             }
750             
751             public void cancel() {
752             }
753         };
754         testSource.runModificationTask(task).commit();
755         String JavaDoc res = TestUtilities.copyFileToString(testFile);
756         System.err.println(res);
757         assertEquals(golden, res);
758     }
759     
760     /**
761      * #92187: Test for return rename
762      */

763     public void testReturn() throws Exception JavaDoc {
764         testFile = new File JavaDoc(getWorkDir(), "Test.java");
765         TestUtilities.copyStringToFile(testFile,
766             "package personal;\n" +
767             "\n" +
768             "public class Test {\n" +
769             " public Object method() {\n" +
770             " return nullanen;\n" +
771             " }\n" +
772             "}\n");
773
774          String JavaDoc golden =
775             "package personal;\n" +
776             "\n" +
777             "public class Test {\n" +
778             " public Object method() {\n" +
779             " return nullanen2;\n" +
780             " }\n" +
781             "}\n";
782         JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
783         CancellableTask task = new CancellableTask<WorkingCopy>() {
784
785             public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
786                 workingCopy.toPhase(Phase.RESOLVED);
787                 TreeMaker make = workingCopy.getTreeMaker();
788                 ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
789                 MethodTree method = (MethodTree) clazz.getMembers().get(1);
790                 ReturnTree rejturn = (ReturnTree) method.getBody().getStatements().get(0);
791                 workingCopy.rewrite(rejturn.getExpression(), make.Identifier("nullanen2"));
792             }
793             
794             public void cancel() {
795             }
796         };
797         testSource.runModificationTask(task).commit();
798         String JavaDoc res = TestUtilities.copyFileToString(testFile);
799         System.err.println(res);
800         assertEquals(golden, res);
801     }
802     
803     /**
804      * #92187: Test in PLUS rename
805      */

806     public void testPlusBinary() throws Exception JavaDoc {
807         testFile = new File JavaDoc(getWorkDir(), "Test.java");
808         TestUtilities.copyStringToFile(testFile,
809             "package personal;\n" +
810             "\n" +
811             "public class Test {\n" +
812             " public Object method() {\n" +
813             " return \"[\" + key + \"; \" + value + \"]\"\n" +
814             " }\n" +
815             "}\n");
816
817          String JavaDoc golden =
818             "package personal;\n" +
819             "\n" +
820             "public class Test {\n" +
821             " public Object method() {\n" +
822             " return \"[\" + key2 + \"; \" + value + \"]\"\n" +
823             " }\n" +
824             "}\n";
825         JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
826         CancellableTask task = new CancellableTask<WorkingCopy>() {
827
828             public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
829                 workingCopy.toPhase(Phase.RESOLVED);
830                 TreeMaker make = workingCopy.getTreeMaker();
831                 ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
832                 MethodTree method = (MethodTree) clazz.getMembers().get(1);
833                 ReturnTree rejturn = (ReturnTree) method.getBody().getStatements().get(0);
834                 BinaryTree in = (BinaryTree) rejturn.getExpression();
835                 for (int i = 0; i < 3; i++) {
836                     in = (BinaryTree) in.getLeftOperand();
837                 }
838                 IdentifierTree ident = (IdentifierTree) in.getRightOperand();
839                 workingCopy.rewrite(ident, make.Identifier("key2"));
840             }
841             
842             public void cancel() {
843             }
844         };
845         testSource.runModificationTask(task).commit();
846         String JavaDoc res = TestUtilities.copyFileToString(testFile);
847         System.err.println(res);
848         assertEquals(golden, res);
849     }
850     
851     /**
852      * #92187: Rename in while
853      */

854     public void testRenameInWhile() throws Exception JavaDoc {
855         testFile = new File JavaDoc(getWorkDir(), "Test.java");
856         TestUtilities.copyStringToFile(testFile,
857             "package personal;\n" +
858             "\n" +
859             "public class Test {\n" +
860             " public Object method() {\n" +
861             " int i = 0;\n" +
862             " while (i < 10) {\n" +
863             " i = i + 1;\n" +
864             " }\n" +
865             " }\n" +
866             "}\n");
867
868          String JavaDoc golden =
869             "package personal;\n" +
870             "\n" +
871             "public class Test {\n" +
872             " public Object method() {\n" +
873             " int counter = 0;\n" +
874             " while (counter < 10) {\n" +
875             " counter = counter + 1;\n" +
876             " }\n" +
877             " }\n" +
878             "}\n";
879         JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
880         CancellableTask task = new CancellableTask<WorkingCopy>() {
881
882             public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
883                 workingCopy.toPhase(Phase.RESOLVED);
884                 TreeMaker make = workingCopy.getTreeMaker();
885                 ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
886                 MethodTree method = (MethodTree) clazz.getMembers().get(1);
887                 VariableTree var = (VariableTree) method.getBody().getStatements().get(0);
888                 workingCopy.rewrite(var, make.setLabel(var, "counter"));
889                 
890                 WhileLoopTree whileLoop = (WhileLoopTree) method.getBody().getStatements().get(1);
891                 ParenthesizedTree paren = (ParenthesizedTree) whileLoop.getCondition();
892                 BinaryTree lessThan = (BinaryTree) paren.getExpression();
893                 IdentifierTree left = (IdentifierTree) lessThan.getLeftOperand();
894                 workingCopy.rewrite(left, make.setLabel(left, "counter"));
895                 
896                 ExpressionStatementTree expr = (ExpressionStatementTree) ((BlockTree) whileLoop.getStatement()).getStatements().get(0);
897                 AssignmentTree assign = (AssignmentTree) expr.getExpression();
898                 left = (IdentifierTree) assign.getVariable();
899                 workingCopy.rewrite(left, make.setLabel(left, "counter"));
900                 BinaryTree right = (BinaryTree) assign.getExpression();
901                 left = (IdentifierTree) right.getLeftOperand();
902                 workingCopy.rewrite(left, make.setLabel(left, "counter"));
903             }
904             
905             public void cancel() {
906             }
907         };
908         testSource.runModificationTask(task).commit();
909         String JavaDoc res = TestUtilities.copyFileToString(testFile);
910         System.err.println(res);
911         assertEquals(golden, res);
912     }
913     
914     /**
915      * #92187: Rename in do while
916      */

917     public void testRenameInDoWhile() throws Exception JavaDoc {
918         testFile = new File JavaDoc(getWorkDir(), "Test.java");
919         TestUtilities.copyStringToFile(testFile,
920             "package personal;\n" +
921             "\n" +
922             "public class Test {\n" +
923             " public Object method() {\n" +
924             " int i = 0;\n" +
925             " do {\n" +
926             " i++;\n" +
927             " } while (i > 10);\n" +
928             " }\n" +
929             "}\n");
930
931          String JavaDoc golden =
932             "package personal;\n" +
933             "\n" +
934             "public class Test {\n" +
935             " public Object method() {\n" +
936             " int counter = 0;\n" +
937             " do {\n" +
938             " counter++;\n" +
939             " } while (counter > 10);\n" +
940             " }\n" +
941             "}\n";
942         JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
943         CancellableTask task = new CancellableTask<WorkingCopy>() {
944
945             public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
946                 workingCopy.toPhase(Phase.RESOLVED);
947                 TreeMaker make = workingCopy.getTreeMaker();
948                 ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
949                 MethodTree method = (MethodTree) clazz.getMembers().get(1);
950                 VariableTree var = (VariableTree) method.getBody().getStatements().get(0);
951                 workingCopy.rewrite(var, make.setLabel(var, "counter"));
952                 
953                 DoWhileLoopTree doWhileLoop = (DoWhileLoopTree) method.getBody().getStatements().get(1);
954                 ParenthesizedTree paren = (ParenthesizedTree) doWhileLoop.getCondition();
955                 BinaryTree lessThan = (BinaryTree) paren.getExpression();
956                 IdentifierTree left = (IdentifierTree) lessThan.getLeftOperand();
957                 workingCopy.rewrite(left, make.setLabel(left, "counter"));
958                 
959                 ExpressionStatementTree expr = (ExpressionStatementTree) ((BlockTree) doWhileLoop.getStatement()).getStatements().get(0);
960                 UnaryTree unary = (UnaryTree) expr.getExpression();
961                 workingCopy.rewrite(unary.getExpression(), make.setLabel(unary.getExpression(), "counter"));
962             }
963             
964             public void cancel() {
965             }
966         };
967         testSource.runModificationTask(task).commit();
968         String JavaDoc res = TestUtilities.copyFileToString(testFile);
969         System.err.println(res);
970         assertEquals(golden, res);
971     }
972     
973     /**
974      * #92187: Rename in for each
975      */

976     public void testRenameInForEach() throws Exception JavaDoc {
977         testFile = new File JavaDoc(getWorkDir(), "Test.java");
978         TestUtilities.copyStringToFile(testFile,
979             "package personal;\n" +
980             "\n" +
981             "public class Test {\n" +
982             " public Object method() {\n" +
983             " List l = new ArrayList();\n" +
984             " for (Object o : l) {\n" +
985             " o.toString();\n" +
986             " }\n" +
987             " }\n" +
988             "}\n");
989
990          String JavaDoc golden =
991             "package personal;\n" +
992             "\n" +
993             "public class Test {\n" +
994             " public Object method() {\n" +
995             " List list = new ArrayList();\n" +
996             " for (Object object : list) {\n" +
997             " object.toString();\n" +
998             " }\n" +
999             " }\n" +
1000            "}\n";
1001                 
1002        JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
1003        CancellableTask task = new CancellableTask<WorkingCopy>() {
1004
1005            public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
1006                workingCopy.toPhase(Phase.RESOLVED);
1007                TreeMaker make = workingCopy.getTreeMaker();
1008                ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
1009                MethodTree method = (MethodTree) clazz.getMembers().get(1);
1010                VariableTree var = (VariableTree) method.getBody().getStatements().get(0);
1011                workingCopy.rewrite(var, make.setLabel(var, "list"));
1012                
1013                EnhancedForLoopTree forEach = (EnhancedForLoopTree) method.getBody().getStatements().get(1);
1014                var = forEach.getVariable();
1015                workingCopy.rewrite(var, make.setLabel(var, "object"));
1016                IdentifierTree ident = (IdentifierTree) forEach.getExpression();
1017                workingCopy.rewrite(ident, make.setLabel(ident, "list"));
1018                BlockTree body = (BlockTree) forEach.getStatement();
1019                ExpressionStatementTree est = (ExpressionStatementTree) body.getStatements().get(0);
1020                MethodInvocationTree mit = (MethodInvocationTree) est.getExpression();
1021                MemberSelectTree mst = (MemberSelectTree) mit.getMethodSelect();
1022                
1023                workingCopy.rewrite(mst.getExpression(), make.setLabel(mst.getExpression(), "object"));
1024            }
1025            
1026            public void cancel() {
1027            }
1028        };
1029        testSource.runModificationTask(task).commit();
1030        String JavaDoc res = TestUtilities.copyFileToString(testFile);
1031        System.err.println(res);
1032        assertEquals(golden, res);
1033    }
1034
1035    /**
1036     * #92187: Test rename in synchronized
1037     */

1038    public void testRenameInSyncro() throws Exception JavaDoc {
1039        testFile = new File JavaDoc(getWorkDir(), "Test.java");
1040        TestUtilities.copyStringToFile(testFile,
1041            "package personal;\n" +
1042            "\n" +
1043            "public class Test {\n" +
1044            " public Object method() {\n" +
1045            " Object lock = new Object();\n" +
1046            " \n" +
1047            " synchronized(lock) {\n" +
1048            " int a = 20;\n" +
1049            " lock.wait();\n" +
1050            " }\n" +
1051            " }\n" +
1052            "}\n");
1053        
1054         String JavaDoc golden =
1055            "package personal;\n" +
1056            "\n" +
1057            "public class Test {\n" +
1058            " public Object method() {\n" +
1059            " Object zamek = new Object();\n" +
1060            " \n" +
1061            " synchronized(zamek) {\n" +
1062            " int a = 20;\n" +
1063            " zamek.wait();\n" +
1064            " }\n" +
1065            " }\n" +
1066            "}\n";
1067                 
1068        JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
1069        CancellableTask task = new CancellableTask<WorkingCopy>() {
1070
1071            public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
1072                workingCopy.toPhase(Phase.RESOLVED);
1073                TreeMaker make = workingCopy.getTreeMaker();
1074                ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
1075                MethodTree method = (MethodTree) clazz.getMembers().get(1);
1076                VariableTree var = (VariableTree) method.getBody().getStatements().get(0);
1077                workingCopy.rewrite(var, make.setLabel(var, "zamek"));
1078                
1079                SynchronizedTree syncro = (SynchronizedTree) method.getBody().getStatements().get(1);
1080                ParenthesizedTree petecko = (ParenthesizedTree) syncro.getExpression();
1081                IdentifierTree ident = (IdentifierTree) petecko.getExpression();
1082                workingCopy.rewrite(ident, make.setLabel(ident, "zamek"));
1083                BlockTree body = (BlockTree) syncro.getBlock();
1084                ExpressionStatementTree est = (ExpressionStatementTree) body.getStatements().get(1);
1085                MethodInvocationTree mit = (MethodInvocationTree) est.getExpression();
1086                MemberSelectTree mst = (MemberSelectTree) mit.getMethodSelect();
1087                
1088                workingCopy.rewrite(mst.getExpression(), make.setLabel(mst.getExpression(), "zamek"));
1089            }
1090            
1091            public void cancel() {
1092            }
1093        };
1094        testSource.runModificationTask(task).commit();
1095        String JavaDoc res = TestUtilities.copyFileToString(testFile);
1096        System.err.println(res);
1097        assertEquals(golden, res);
1098    }
1099    
1100    /**
1101     * #92187: Test rename in catch
1102     */

1103    public void testRenameInCatch() throws Exception JavaDoc {
1104        testFile = new File JavaDoc(getWorkDir(), "Test.java");
1105        TestUtilities.copyStringToFile(testFile,
1106            "package personal;\n" +
1107            "\n" +
1108            "public class Test {\n" +
1109            " public Object method() {\n" +
1110            " Object zamek = new Object();\n" +
1111            " try {\n" +
1112            " zamek.wait();\n" +
1113            " } catch (InterruptedException ex) {\n" +
1114            " ex.printStackTrace();\n" +
1115            " }\n" +
1116            " }\n" +
1117            "}\n");
1118        
1119         String JavaDoc golden =
1120            "package personal;\n" +
1121            "\n" +
1122            "public class Test {\n" +
1123            " public Object method() {\n" +
1124            " Object zamek = new Object();\n" +
1125            " try {\n" +
1126            " zamek.wait();\n" +
1127            " } catch (InterruptedException vyjimka) {\n" +
1128            " vyjimka.printStackTrace();\n" +
1129            " }\n" +
1130            " }\n" +
1131            "}\n";
1132                 
1133        JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
1134        CancellableTask task = new CancellableTask<WorkingCopy>() {
1135
1136            public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
1137                workingCopy.toPhase(Phase.RESOLVED);
1138                TreeMaker make = workingCopy.getTreeMaker();
1139                ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
1140                MethodTree method = (MethodTree) clazz.getMembers().get(1);
1141                VariableTree var = (VariableTree) method.getBody().getStatements().get(0);
1142                workingCopy.rewrite(var, make.setLabel(var, "zamek"));
1143                TryTree tryTree = (TryTree) method.getBody().getStatements().get(1);
1144                CatchTree ct = tryTree.getCatches().get(0);
1145                workingCopy.rewrite(ct.getParameter(), make.setLabel(ct.getParameter(), "vyjimka"));
1146                BlockTree body = (BlockTree) ct.getBlock();
1147                ExpressionStatementTree est = (ExpressionStatementTree) body.getStatements().get(0);
1148                MethodInvocationTree mit = (MethodInvocationTree) est.getExpression();
1149                MemberSelectTree mst = (MemberSelectTree) mit.getMethodSelect();
1150                workingCopy.rewrite(mst.getExpression(), make.setLabel(mst.getExpression(), "vyjimka"));
1151            }
1152            
1153            public void cancel() {
1154            }
1155        };
1156        testSource.runModificationTask(task).commit();
1157        String JavaDoc res = TestUtilities.copyFileToString(testFile);
1158        System.err.println(res);
1159        assertEquals(golden, res);
1160    }
1161    
1162    /**
1163     * #92187: Test rename in assign op. bit or
1164     * todo (#pf): extend test to replace right side and operator too!
1165     */

1166    public void testRenameInAssignOp() throws Exception JavaDoc {
1167        testFile = new File JavaDoc(getWorkDir(), "Test.java");
1168        TestUtilities.copyStringToFile(testFile,
1169            "package personal;\n" +
1170            "\n" +
1171            "public class Test {\n" +
1172            " public Object method() {\n" +
1173            " int bits2 = 0;\n" +
1174            " bits2 |= 0x12;\n" +
1175            " }\n" +
1176            "}\n");
1177        
1178         String JavaDoc golden =
1179            "package personal;\n" +
1180            "\n" +
1181            "public class Test {\n" +
1182            " public Object method() {\n" +
1183            " int bits = 0;\n" +
1184            " bits |= 0x12;\n" +
1185            " }\n" +
1186            "}\n";
1187                 
1188        JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
1189        CancellableTask task = new CancellableTask<WorkingCopy>() {
1190
1191            public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
1192                workingCopy.toPhase(Phase.RESOLVED);
1193                TreeMaker make = workingCopy.getTreeMaker();
1194                ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
1195                MethodTree method = (MethodTree) clazz.getMembers().get(1);
1196                BlockTree block = method.getBody();
1197                VariableTree var = (VariableTree) block.getStatements().get(0);
1198                workingCopy.rewrite(var, make.setLabel(var, "bits"));
1199                ExpressionStatementTree est = (ExpressionStatementTree) block.getStatements().get(1);
1200                CompoundAssignmentTree cat = (CompoundAssignmentTree) est.getExpression();
1201                IdentifierTree ident = (IdentifierTree) cat.getVariable();
1202                workingCopy.rewrite(ident, make.setLabel(ident, "bits"));
1203            }
1204            
1205            public void cancel() {
1206            }
1207        };
1208        testSource.runModificationTask(task).commit();
1209        String JavaDoc res = TestUtilities.copyFileToString(testFile);
1210        System.err.println(res);
1211        assertEquals(golden, res);
1212    }
1213    
1214    /**
1215     * #92187: Test rename in assign op. bit or
1216     * both, var and index are renamed in this test.
1217     * does not rename in new array
1218     */

1219    public void testRenameInArrayIndex() throws Exception JavaDoc {
1220        testFile = new File JavaDoc(getWorkDir(), "Test.java");
1221        TestUtilities.copyStringToFile(testFile,
1222            "package personal;\n" +
1223            "\n" +
1224            "public class Test {\n" +
1225            " public Object method() {\n" +
1226            " int pos = 10;\n" +
1227            " int[] i = new int[10];\n" +
1228            " System.err.println(i[pos-1]);\n" +
1229            " }\n" +
1230            "}\n");
1231        
1232         String JavaDoc golden =
1233            "package personal;\n" +
1234            "\n" +
1235            "public class Test {\n" +
1236            " public Object method() {\n" +
1237            " int position = 10;\n" +
1238            " int[] icko = new int[10];\n" +
1239            " System.err.println(icko[position-1]);\n" +
1240            " }\n" +
1241            "}\n";
1242                 
1243        JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
1244        CancellableTask task = new CancellableTask<WorkingCopy>() {
1245
1246            public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
1247                workingCopy.toPhase(Phase.RESOLVED);
1248                TreeMaker make = workingCopy.getTreeMaker();
1249                ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
1250                MethodTree method = (MethodTree) clazz.getMembers().get(1);
1251                BlockTree block = method.getBody();
1252                VariableTree var1 = (VariableTree) block.getStatements().get(0);
1253                VariableTree var2 = (VariableTree) block.getStatements().get(1);
1254                workingCopy.rewrite(var1, make.setLabel(var1, "position"));
1255                workingCopy.rewrite(var2, make.setLabel(var2, "icko"));
1256                ExpressionStatementTree est = (ExpressionStatementTree) block.getStatements().get(2);
1257                MethodInvocationTree mit = (MethodInvocationTree) est.getExpression();
1258                ArrayAccessTree aat = (ArrayAccessTree) mit.getArguments().get(0);
1259                IdentifierTree ident = (IdentifierTree) aat.getExpression();
1260                workingCopy.rewrite(ident, make.setLabel(ident, "icko"));
1261                BinaryTree binary = (BinaryTree) aat.getIndex();
1262                ident = (IdentifierTree) binary.getLeftOperand();
1263                workingCopy.rewrite(ident, make.setLabel(ident, "position"));
1264            }
1265            
1266            public void cancel() {
1267            }
1268        };
1269        testSource.runModificationTask(task).commit();
1270        String JavaDoc res = TestUtilities.copyFileToString(testFile);
1271        System.err.println(res);
1272        assertEquals(golden, res);
1273    }
1274    
1275    /**
1276     * #92187: Test rename in type cast
1277     */

1278    public void testRenameInTypeCast() throws Exception JavaDoc {
1279        testFile = new File JavaDoc(getWorkDir(), "Test.java");
1280        TestUtilities.copyStringToFile(testFile,
1281            "package personal;\n" +
1282            "\n" +
1283            "public class Test {\n" +
1284            " static class Item {}\n" +
1285            " public Object method() {\n" +
1286            " Object o = null;\n" +
1287            " Item item = (Item) o;\n" +
1288            " }\n" +
1289            "}\n");
1290        
1291         String JavaDoc golden =
1292            "package personal;\n" +
1293            "\n" +
1294            "public class Test {\n" +
1295            " static class It {}\n" +
1296            " public Object method() {\n" +
1297            " Object object = null;\n" +
1298            " It it = (It) object;\n" +
1299            " }\n" +
1300            "}\n";
1301                 
1302        JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
1303        CancellableTask task = new CancellableTask<WorkingCopy>() {
1304
1305            public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
1306                workingCopy.toPhase(Phase.RESOLVED);
1307                TreeMaker make = workingCopy.getTreeMaker();
1308                ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
1309                ClassTree clazzIn = (ClassTree) clazz.getMembers().get(1);
1310                workingCopy.rewrite(clazzIn, make.setLabel(clazzIn, "It"));
1311                MethodTree method = (MethodTree) clazz.getMembers().get(2);
1312                BlockTree block = method.getBody();
1313                VariableTree var1 = (VariableTree) block.getStatements().get(0);
1314                VariableTree var2 = (VariableTree) block.getStatements().get(1);
1315                workingCopy.rewrite(var1, make.setLabel(var1, "object"));
1316                VariableTree var2copy = make.Variable(
1317                        var2.getModifiers(),
1318                        "it",
1319                        make.Identifier("It"),
1320                        var2.getInitializer());
1321                workingCopy.rewrite(var2, var2copy);
1322                TypeCastTree tct = (TypeCastTree) var2.getInitializer();
1323                IdentifierTree ident = (IdentifierTree) tct.getType();
1324                workingCopy.rewrite(ident, make.setLabel(ident, "It"));
1325                ident = (IdentifierTree) tct.getExpression();
1326                workingCopy.rewrite(ident, make.setLabel(ident, "object"));
1327            }
1328            
1329            public void cancel() {
1330            }
1331        };
1332        testSource.runModificationTask(task).commit();
1333        String JavaDoc res = TestUtilities.copyFileToString(testFile);
1334        System.err.println(res);
1335        assertEquals(golden, res);
1336    }
1337    
1338    /**
1339     * #92187: Test rename in assert
1340     */

1341    public void testRenameInAssert() throws Exception JavaDoc {
1342        testFile = new File JavaDoc(getWorkDir(), "Test.java");
1343        TestUtilities.copyStringToFile(testFile,
1344            "package personal;\n" +
1345            "\n" +
1346            "public class Test {\n" +
1347            " public Object method(int a) {\n" +
1348            " assert a == 12 : a;\n" +
1349            " }\n" +
1350            "}\n");
1351        
1352         String JavaDoc golden =
1353            "package personal;\n" +
1354            "\n" +
1355            "public class Test {\n" +
1356            " public Object method(int ada) {\n" +
1357            " assert ada == 12 : ada;\n" +
1358            " }\n" +
1359            "}\n";
1360                 
1361        JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
1362        CancellableTask task = new CancellableTask<WorkingCopy>() {
1363
1364            public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
1365                workingCopy.toPhase(Phase.RESOLVED);
1366                TreeMaker make = workingCopy.getTreeMaker();
1367                ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
1368                MethodTree method = (MethodTree) clazz.getMembers().get(1);
1369                VariableTree vtecko = method.getParameters().get(0);
1370                workingCopy.rewrite(vtecko, make.setLabel(vtecko, "ada"));
1371                BlockTree block = method.getBody();
1372                AssertTree ass = (AssertTree) block.getStatements().get(0);
1373                BinaryTree cond = (BinaryTree) ass.getCondition();
1374                IdentifierTree ident = (IdentifierTree) cond.getLeftOperand();
1375                workingCopy.rewrite(ident, make.setLabel(ident, "ada"));
1376                ident = (IdentifierTree) ass.getDetail();
1377                workingCopy.rewrite(ident, make.setLabel(ident, "ada"));
1378            }
1379            
1380            public void cancel() {
1381            }
1382        };
1383        testSource.runModificationTask(task).commit();
1384        String JavaDoc res = TestUtilities.copyFileToString(testFile);
1385        System.err.println(res);
1386        assertEquals(golden, res);
1387    }
1388    
1389    /**
1390     * #92187: Test rename in throw statement
1391     */

1392    public void testRenameInThrowSt() throws Exception JavaDoc {
1393        testFile = new File JavaDoc(getWorkDir(), "Test.java");
1394        TestUtilities.copyStringToFile(testFile,
1395            "package personal;\n" +
1396            "\n" +
1397            "public class Test {\n" +
1398            " public Object method() {\n" +
1399            " throw new NullPointerException();\n" +
1400            " }\n" +
1401            "}\n");
1402        
1403         String JavaDoc golden =
1404            "package personal;\n" +
1405            "\n" +
1406            "public class Test {\n" +
1407            " public Object method() {\n" +
1408            " throw new EnpeEcko();\n" +
1409            " }\n" +
1410            "}\n";
1411                 
1412        JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
1413        CancellableTask task = new CancellableTask<WorkingCopy>() {
1414
1415            public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
1416                workingCopy.toPhase(Phase.RESOLVED);
1417                TreeMaker make = workingCopy.getTreeMaker();
1418                ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
1419                MethodTree method = (MethodTree) clazz.getMembers().get(1);
1420                BlockTree block = method.getBody();
1421                ThrowTree ttecko = (ThrowTree) block.getStatements().get(0);
1422                NewClassTree nct = (NewClassTree) ttecko.getExpression();
1423                IdentifierTree ident = (IdentifierTree) nct.getIdentifier();
1424                workingCopy.rewrite(ident, make.setLabel(ident, "EnpeEcko"));
1425            }
1426            
1427            public void cancel() {
1428            }
1429        };
1430        testSource.runModificationTask(task).commit();
1431        String JavaDoc res = TestUtilities.copyFileToString(testFile);
1432        System.err.println(res);
1433        assertEquals(golden, res);
1434    }
1435    
1436    /**
1437     * #92187: Test rename in conditional
1438     */

1439    public void testRenameInConditional() throws Exception JavaDoc {
1440        testFile = new File JavaDoc(getWorkDir(), "Test.java");
1441        TestUtilities.copyStringToFile(testFile,
1442            "package personal;\n" +
1443            "\n" +
1444            "public class Test {\n" +
1445            " public Object method(int ada) {\n" +
1446            " int result = ada == 10 ? ada++ : --ada;\n" +
1447            " }\n" +
1448            "}\n");
1449        
1450         String JavaDoc golden =
1451            "package personal;\n" +
1452            "\n" +
1453            "public class Test {\n" +
1454            " public Object method(int alda) {\n" +
1455            " int result = alda == 10 ? alda++ : --alda;\n" +
1456            " }\n" +
1457            "}\n";
1458                 
1459        JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
1460        CancellableTask task = new CancellableTask<WorkingCopy>() {
1461
1462            public void run(WorkingCopy workingCopy) throws java.io.IOException JavaDoc {
1463                workingCopy.toPhase(Phase.RESOLVED);
1464                TreeMaker make = workingCopy.getTreeMaker();
1465                ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
1466                MethodTree method = (MethodTree) clazz.getMembers().get(1);
1467                VariableTree vtecko = method.getParameters().get(0);
1468                workingCopy.rewrite(vtecko, make.setLabel(vtecko, "alda"));
1469                BlockTree block = method.getBody();
1470                VariableTree var = (VariableTree) block.getStatements().get(0);
1471                ConditionalExpressionTree cet = (ConditionalExpressionTree) var.getInitializer();
1472                BinaryTree cond = (BinaryTree) cet.getCondition();
1473                IdentifierTree ident = (IdentifierTree) cond.getLeftOperand();
1474                workingCopy.rewrite(ident, make.setLabel(ident, "alda"));
1475                UnaryTree truePart = (UnaryTree) cet.getTrueExpression();
1476                ident = (IdentifierTree) truePart.getExpression();
1477                workingCopy.rewrite(ident, make.setLabel(ident, "alda"));
1478                UnaryTree falsePart = (UnaryTree) cet.getFalseExpression();
1479                ident = (IdentifierTree) falsePart.getExpression();
1480                workingCopy.rewrite(ident, make.setLabel(ident, "alda"));
1481            }
1482            
1483            public void cancel() {
1484            }
1485        };
1486        testSource.runModificationTask(task).commit();
1487        String JavaDoc res = TestUtilities.copyFileToString(testFile);
1488        System.err.println(res);
1489        assertEquals(golden, res);
1490    }
1491
1492    /**
1493     * #92187: Test rename in labelled
1494     */

1495    public void testRenameInLabelled() throws Exception JavaDoc {
1496        testFile = new File JavaDoc(getWorkDir(), "Test.java");
1497        TestUtilities.copyStringToFile(testFile, "package personal;\n\npublic class Test {\n public Object method() {\n cycle_start: for (int i = 0; i < 10; i++) {\n }\n }\n}\n");
1498        String JavaDoc golden = "package personal;\n\npublic class Test {\n public Object method() {\n zacatek_smycky: for (int i = 0; i < 10; i++) {\n }\n }\n}\n";
1499        JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
1500        CancellableTask<WorkingCopy> task = new CancellableTask<WorkingCopy>() {
1501            
1502            public void run(WorkingCopy workingCopy) throws IOException JavaDoc {
1503                workingCopy.toPhase(org.netbeans.api.java.source.JavaSource.Phase.RESOLVED);
1504                TreeMaker make = workingCopy.getTreeMaker();
1505                ClassTree clazz = (ClassTree)workingCopy.getCompilationUnit().getTypeDecls().get(0);
1506                MethodTree method = (MethodTree)clazz.getMembers().get(1);
1507                BlockTree block = method.getBody();
1508                LabeledStatementTree lst = (LabeledStatementTree)block.getStatements().get(0);
1509                workingCopy.rewrite(lst, make.setLabel(lst, "zacatek_smycky"));
1510            }
1511            
1512            public void cancel() {
1513            }
1514            
1515        };
1516        testSource.runModificationTask(task).commit();
1517        String JavaDoc res = TestUtilities.copyFileToString(testFile);
1518        System.err.println(res);
1519        assertEquals(golden, res);
1520    }
1521    
1522    /**
1523     * #92187: Test rename in continue
1524     */

1525    public void testRenameInContinue()
1526            throws Exception JavaDoc {
1527        testFile = new File JavaDoc(getWorkDir(), "Test.java");
1528        TestUtilities.copyStringToFile(testFile, "package personal;\n\npublic class Test {\n public Object method() {\n cycle_start: for (int i = 0; i < 10; i++) {\n continue cycle_start;\n }\n }\n}\n");
1529        String JavaDoc golden = "package personal;\n\npublic class Test {\n public Object method() {\n zacatek_smycky: for (int i = 0; i < 10; i++) {\n continue zacatek_smycky;\n }\n }\n}\n";
1530        JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
1531        CancellableTask<WorkingCopy> task = new CancellableTask<WorkingCopy>() {
1532            
1533            public void run(WorkingCopy workingCopy) throws IOException JavaDoc {
1534                workingCopy.toPhase(org.netbeans.api.java.source.JavaSource.Phase.RESOLVED);
1535                TreeMaker make = workingCopy.getTreeMaker();
1536                ClassTree clazz = (ClassTree)workingCopy.getCompilationUnit().getTypeDecls().get(0);
1537                MethodTree method = (MethodTree)clazz.getMembers().get(1);
1538                BlockTree block = method.getBody();
1539                LabeledStatementTree lst = (LabeledStatementTree)block.getStatements().get(0);
1540                workingCopy.rewrite(lst, make.setLabel(lst, "zacatek_smycky"));
1541                ForLoopTree flt = (ForLoopTree)lst.getStatement();
1542                BlockTree forTree = (BlockTree)flt.getStatement();
1543                ContinueTree ct = (ContinueTree)forTree.getStatements().get(0);
1544                workingCopy.rewrite(ct, make.setLabel(ct, "zacatek_smycky"));
1545            }
1546            
1547            public void cancel() {
1548            }
1549        };
1550        testSource.runModificationTask(task).commit();
1551        String JavaDoc res = TestUtilities.copyFileToString(testFile);
1552        System.err.println(res);
1553        assertEquals(golden, res);
1554    }
1555
1556    /**
1557     * #92187: Test rename in break
1558     */

1559    public void testRenameInBreak() throws Exception JavaDoc {
1560        testFile = new File JavaDoc(getWorkDir(), "Test.java");
1561        TestUtilities.copyStringToFile(testFile, "package personal;\n\npublic class Test {\n public Object method() {\n cycle_start: for (int i = 0; i < 10; i++) {\n break cycle_start;\n }\n }\n}\n");
1562        String JavaDoc golden = "package personal;\n\npublic class Test {\n public Object method() {\n zacatek_smycky: for (int i = 0; i < 10; i++) {\n break zacatek_smycky;\n }\n }\n}\n";
1563        JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
1564        CancellableTask<WorkingCopy> task = new CancellableTask<WorkingCopy>() {
1565            
1566            public void run(WorkingCopy workingCopy)
1567                    throws IOException JavaDoc {
1568                workingCopy.toPhase(org.netbeans.api.java.source.JavaSource.Phase.RESOLVED);
1569                TreeMaker make = workingCopy.getTreeMaker();
1570                ClassTree clazz = (ClassTree)workingCopy.getCompilationUnit().getTypeDecls().get(0);
1571                MethodTree method = (MethodTree)clazz.getMembers().get(1);
1572                BlockTree block = method.getBody();
1573                LabeledStatementTree lst = (LabeledStatementTree)block.getStatements().get(0);
1574                workingCopy.rewrite(lst, make.setLabel(lst, "zacatek_smycky"));
1575                ForLoopTree flt = (ForLoopTree)lst.getStatement();
1576                BlockTree forTree = (BlockTree)flt.getStatement();
1577                BreakTree bt = (BreakTree)forTree.getStatements().get(0);
1578                workingCopy.rewrite(bt, make.setLabel(bt, "zacatek_smycky"));
1579            }
1580            
1581            public void cancel() {
1582            }
1583        };
1584        testSource.runModificationTask(task).commit();
1585        String JavaDoc res = TestUtilities.copyFileToString(testFile);
1586        System.err.println(res);
1587        assertEquals(golden, res);
1588    }
1589    
1590    /**
1591     * #88073: Test rename in loc. var type param.
1592     */

1593    public void testRenameLocVarTypePar() throws Exception JavaDoc {
1594        testFile = new File JavaDoc(getWorkDir(), "Test.java");
1595        testFile = new File JavaDoc(getWorkDir(), "Test.java");
1596        TestUtilities.copyStringToFile(testFile,
1597            "package personal;\n\n" +
1598            "import java.util.*;\n" +
1599            "\n" +
1600            "public class Test {\n" +
1601            " public Object method(int a) {\n" +
1602            " Map<String,Data> map1 = new HashMap<String,Data>();\n" +
1603            " Map<Data,String> map2 = new TreeMap<Data, String>();\n" +
1604            " }\n" +
1605            "}\n");
1606        
1607         String JavaDoc golden =
1608            "package personal;\n\n" +
1609            "import java.util.*;\n" +
1610            "\n" +
1611            "public class Test {\n" +
1612            " public Object method(int a) {\n" +
1613            " Map<String,DataRen> map1 = new HashMap<String,DataRen>();\n" +
1614            " Map<DataRen,String> map2 = new TreeMap<DataRen, String>();\n" +
1615            " }\n" +
1616            "}\n";
1617         
1618        JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
1619        CancellableTask<WorkingCopy> task = new CancellableTask<WorkingCopy>() {
1620            
1621            public void run(WorkingCopy workingCopy)
1622                    throws IOException JavaDoc {
1623                workingCopy.toPhase(org.netbeans.api.java.source.JavaSource.Phase.RESOLVED);
1624                TreeMaker make = workingCopy.getTreeMaker();
1625                ClassTree clazz = (ClassTree) workingCopy.getCompilationUnit().getTypeDecls().get(0);
1626                MethodTree method = (MethodTree) clazz.getMembers().get(1);
1627                BlockTree block = method.getBody();
1628                
1629                VariableTree vt = (VariableTree) block.getStatements().get(0);
1630                ParameterizedTypeTree ptt = (ParameterizedTypeTree) vt.getType();
1631                IdentifierTree it = (IdentifierTree) ptt.getTypeArguments().get(1);
1632                workingCopy.rewrite(it, make.setLabel(it, "DataRen"));
1633                
1634                NewClassTree nct = (NewClassTree) vt.getInitializer();
1635                ptt = (ParameterizedTypeTree) nct.getIdentifier();
1636                it = (IdentifierTree) ptt.getTypeArguments().get(1);
1637                workingCopy.rewrite(it, make.setLabel(it, "DataRen"));
1638                
1639                vt = (VariableTree) block.getStatements().get(1);
1640                ptt = (ParameterizedTypeTree) vt.getType();
1641                it = (IdentifierTree) ptt.getTypeArguments().get(0);
1642                workingCopy.rewrite(it, make.setLabel(it, "DataRen"));
1643                nct = (NewClassTree) vt.getInitializer();
1644                ptt = (ParameterizedTypeTree) nct.getIdentifier();
1645                it = (IdentifierTree) ptt.getTypeArguments().get(0);
1646                workingCopy.rewrite(it, make.setLabel(it, "DataRen"));
1647            }
1648            
1649            public void cancel() {
1650            }
1651        };
1652        testSource.runModificationTask(task).commit();
1653        String JavaDoc res = TestUtilities.copyFileToString(testFile);
1654        System.err.println(res);
1655        assertEquals(golden, res);
1656    }
1657    
1658    /**
1659     * Test rename in switch
1660     */

1661    public void testRenameInSwitch() throws Exception JavaDoc {
1662        testFile = new File JavaDoc(getWorkDir(), "Test.java");
1663        TestUtilities.copyStringToFile(testFile,
1664            "package personal;\n" +
1665            "\n" +
1666            "public class Test {\n" +
1667            " public Object method(int la) {\n" +
1668            " switch (la) {\n" +
1669            " case 0:\n" +
1670            " break;\n" +
1671            " case 1:\n" +
1672            " break;\n" +
1673            " default:\n" +
1674            " // do nothing\n" +
1675            " }\n" +
1676            " }\n" +
1677            "}\n");
1678        
1679         String JavaDoc golden =
1680            "package personal;\n" +
1681            "\n" +
1682            "public class Test {\n" +
1683            " public Object method(int renamed) {\n" +
1684            " switch (renamed) {\n" +
1685            " case 0:\n" +
1686            " break;\n" +
1687            " case 1:\n" +
1688            " break;\n" +
1689            " default:\n" +
1690            " // do nothing\n" +
1691            " }\n" +
1692            " }\n" +
1693            "}\n";
1694                 
1695        JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
1696        CancellableTask task = new CancellableTask<WorkingCopy>() {
1697
1698            public void run(WorkingCopy workingCopy) throws IOException JavaDoc {
1699                workingCopy.toPhase(org.netbeans.api.java.source.JavaSource.Phase.RESOLVED);
1700                TreeMaker make = workingCopy.getTreeMaker();
1701                ClassTree clazz = (ClassTree)workingCopy.getCompilationUnit().getTypeDecls().get(0);
1702                MethodTree method = (MethodTree)clazz.getMembers().get(1);
1703                // parameter rename
1704
VariableTree vt = method.getParameters().get(0);
1705                workingCopy.rewrite(vt, make.setLabel(vt, "renamed"));
1706                // body rename
1707
BlockTree block = method.getBody();
1708                SwitchTree swicStrom = (SwitchTree) block.getStatements().get(0);
1709                ParenthesizedTree pTree = (ParenthesizedTree) swicStrom.getExpression();
1710                IdentifierTree ident = (IdentifierTree) pTree.getExpression();
1711                workingCopy.rewrite(ident, make.setLabel(ident, "renamed"));
1712            }
1713            
1714            public void cancel() {
1715            }
1716        };
1717        testSource.runModificationTask(task).commit();
1718        String JavaDoc res = TestUtilities.copyFileToString(testFile);
1719        System.err.println(res);
1720        assertEquals(golden, res);
1721    }
1722    
1723    /**
1724     * diffNewArray
1725     * diffTypeArray
1726     */

1727    public void testRenameInTypeNewArr() throws Exception JavaDoc {
1728        testFile = new File JavaDoc(getWorkDir(), "Test.java");
1729        TestUtilities.copyStringToFile(testFile,
1730            "package personal;\n" +
1731            "\n" +
1732            "public class Test {\n" +
1733            " public Object method() {\n" +
1734            " int dim1 = 10;\n" +
1735            " int dim2 = 15;\n" +
1736            " Test[][] obj = new Test[dim1][dim2];\n" +
1737            " }\n" +
1738            "}\n");
1739        
1740         String JavaDoc golden =
1741            "package personal;\n" +
1742            "\n" +
1743            "public class RenamedTest {\n" +
1744            " public Object method() {\n" +
1745            " int dim1 = 10;\n" +
1746            " int dim2 = 15;\n" +
1747            " RenamedTest[][] obj = new RenamedTest[dim1][dim2];\n" +
1748            " }\n" +
1749            "}\n";
1750                 
1751        JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
1752        CancellableTask task = new CancellableTask<WorkingCopy>() {
1753
1754            public void run(WorkingCopy workingCopy) throws IOException JavaDoc {
1755                workingCopy.toPhase(org.netbeans.api.java.source.JavaSource.Phase.RESOLVED);
1756                TreeMaker make = workingCopy.getTreeMaker();
1757                ClassTree clazz = (ClassTree)workingCopy.getCompilationUnit().getTypeDecls().get(0);
1758                workingCopy.rewrite(clazz, make.setLabel(clazz, "RenamedTest"));
1759                MethodTree method = (MethodTree)clazz.getMembers().get(1);
1760                BlockTree block = method.getBody();
1761                // type rename
1762
VariableTree vt = (VariableTree) block.getStatements().get(2);
1763                ArrayTypeTree att = (ArrayTypeTree) vt.getType();
1764                att = (ArrayTypeTree) att.getType(); // go inside, two dimensional array
1765
workingCopy.rewrite(att.getType(), make.Identifier("RenamedTest"));
1766                // new array rename
1767
NewArrayTree nat = (NewArrayTree) vt.getInitializer();
1768                workingCopy.rewrite(nat.getType(), make.Identifier("RenamedTest"));
1769            }
1770            
1771            public void cancel() {
1772            }
1773        };
1774        testSource.runModificationTask(task).commit();
1775        String JavaDoc res = TestUtilities.copyFileToString(testFile);
1776        System.err.println(res);
1777        assertEquals(golden, res);
1778    }
1779    
1780    /**
1781     * diffTypeTest
1782     */

1783    public void testRenameInTypeTest() throws Exception JavaDoc {
1784        testFile = new File JavaDoc(getWorkDir(), "Test.java");
1785        TestUtilities.copyStringToFile(testFile,
1786            "package personal;\n" +
1787            "\n" +
1788            "public class Test {\n" +
1789            " public Object method(Object o) {\n" +
1790            " if (o instanceof Test) {\n" +
1791            " }\n" +
1792            " }\n" +
1793            "}\n");
1794        
1795         String JavaDoc golden =
1796            "package personal;\n" +
1797            "\n" +
1798            "public class Test {\n" +
1799            " public Object method(Object obj) {\n" +
1800            " if (obj instanceof Test) {\n" +
1801            " }\n" +
1802            " }\n" +
1803            "}\n";
1804                 
1805        JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
1806        CancellableTask task = new CancellableTask<WorkingCopy>() {
1807
1808            public void run(WorkingCopy workingCopy) throws IOException JavaDoc {
1809                workingCopy.toPhase(org.netbeans.api.java.source.JavaSource.Phase.RESOLVED);
1810                TreeMaker make = workingCopy.getTreeMaker();
1811                ClassTree clazz = (ClassTree)workingCopy.getCompilationUnit().getTypeDecls().get(0);
1812                MethodTree method = (MethodTree)clazz.getMembers().get(1);
1813                // parameter rename
1814
VariableTree vt = method.getParameters().get(0);
1815                workingCopy.rewrite(vt, make.setLabel(vt, "obj"));
1816                // body rename
1817
BlockTree block = method.getBody();
1818                IfTree iv = (IfTree) block.getStatements().get(0);
1819                ParenthesizedTree pt = (ParenthesizedTree) iv.getCondition();
1820                InstanceOfTree iot = (InstanceOfTree) pt.getExpression();
1821                IdentifierTree ident = (IdentifierTree) iot.getExpression();
1822                workingCopy.rewrite(ident, make.Identifier("obj"));
1823            }
1824            
1825            public void cancel() {
1826            }
1827        };
1828        testSource.runModificationTask(task).commit();
1829        String JavaDoc res = TestUtilities.copyFileToString(testFile);
1830        System.err.println(res);
1831        assertEquals(golden, res);
1832    }
1833    
1834    /**
1835     * diffTypeTestII
1836     */

1837    public void testRenameInTypeTestII() throws Exception JavaDoc {
1838        testFile = new File JavaDoc(getWorkDir(), "Test.java");
1839        TestUtilities.copyStringToFile(testFile,
1840            "package personal;\n" +
1841            "\n" +
1842            "public class Test {\n" +
1843            " public Object method(Object o) {\n" +
1844            " if (o instanceof Test) {\n" +
1845            " }\n" +
1846            " }\n" +
1847            "}\n");
1848        
1849         String JavaDoc golden =
1850            "package personal;\n" +
1851            "\n" +
1852            "public class RenamedTest {\n" +
1853            " public Object method(Object o) {\n" +
1854            " if (o instanceof RenamedTest) {\n" +
1855            " }\n" +
1856            " }\n" +
1857            "}\n";
1858                 
1859        JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
1860        CancellableTask task = new CancellableTask<WorkingCopy>() {
1861
1862            public void run(WorkingCopy workingCopy) throws IOException JavaDoc {
1863                workingCopy.toPhase(org.netbeans.api.java.source.JavaSource.Phase.RESOLVED);
1864                TreeMaker make = workingCopy.getTreeMaker();
1865                ClassTree clazz = (ClassTree)workingCopy.getCompilationUnit().getTypeDecls().get(0);
1866                workingCopy.rewrite(clazz, make.setLabel(clazz, "RenamedTest"));
1867                MethodTree method = (MethodTree)clazz.getMembers().get(1);
1868                // body rename
1869
BlockTree block = method.getBody();
1870                IfTree iv = (IfTree) block.getStatements().get(0);
1871                ParenthesizedTree pt = (ParenthesizedTree) iv.getCondition();
1872                InstanceOfTree iot = (InstanceOfTree) pt.getExpression();
1873                IdentifierTree ident = (IdentifierTree) iot.getType();
1874                workingCopy.rewrite(ident, make.Identifier("RenamedTest"));
1875            }
1876            
1877            public void cancel() {
1878            }
1879        };
1880        testSource.runModificationTask(task).commit();
1881        String JavaDoc res = TestUtilities.copyFileToString(testFile);
1882        System.err.println(res);
1883        assertEquals(golden, res);
1884    }
1885    
1886    /**
1887     * Changing literal test - #95614
1888     */

1889    public void testChangeLiteral() throws Exception JavaDoc {
1890        testFile = new File JavaDoc(getWorkDir(), "Test.java");
1891        TestUtilities.copyStringToFile(testFile,
1892            "package personal;\n" +
1893            "\n" +
1894            "public class Test {\n" +
1895            " public Object method(Object o) {\n" +
1896            " System.err.println(\"Karel\");\n" +
1897            " }\n" +
1898            "}\n");
1899        
1900         String JavaDoc golden =
1901            "package personal;\n" +
1902            "\n" +
1903            "public class RenamedTest {\n" +
1904            " public Object method(Object o) {\n" +
1905            " System.err.println(\"Hrebejk\");\n" +
1906            " }\n" +
1907            "}\n";
1908                 
1909        JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
1910        CancellableTask task = new CancellableTask<WorkingCopy>() {
1911
1912            public void run(WorkingCopy workingCopy) throws IOException JavaDoc {
1913                workingCopy.toPhase(org.netbeans.api.java.source.JavaSource.Phase.RESOLVED);
1914                TreeMaker make = workingCopy.getTreeMaker();
1915                ClassTree clazz = (ClassTree)workingCopy.getCompilationUnit().getTypeDecls().get(0);
1916                workingCopy.rewrite(clazz, make.setLabel(clazz, "RenamedTest"));
1917                MethodTree method = (MethodTree)clazz.getMembers().get(1);
1918                // body rename
1919
BlockTree block = method.getBody();
1920                ExpressionStatementTree expr = (ExpressionStatementTree) block.getStatements().get(0);
1921                MethodInvocationTree invocation = (MethodInvocationTree) expr.getExpression();
1922                LiteralTree literal = (LiteralTree) invocation.getArguments().get(0);
1923                workingCopy.rewrite(literal, make.Literal("Hrebejk"));
1924            }
1925            
1926            public void cancel() {
1927            }
1928        };
1929        testSource.runModificationTask(task).commit();
1930        String JavaDoc res = TestUtilities.copyFileToString(testFile);
1931        System.err.println(res);
1932        assertEquals(golden, res);
1933    }
1934    
1935    /**
1936     * Changing names in array init - #92610
1937     */

1938    public void testRenameInArrInit() throws Exception JavaDoc {
1939        testFile = new File JavaDoc(getWorkDir(), "Test.java");
1940        TestUtilities.copyStringToFile(testFile,
1941            "package personal;\n" +
1942            "\n" +
1943            "public class Test {\n" +
1944            " public Object method(Object o) {\n" +
1945            " Inner inInst = new Inner();\n" +
1946            " Inner[] inArr = new Inner[] { inInst, new Inner() };\n" +
1947            " }\n" +
1948            " private static class Inner {\n" +
1949            " public Inner() {\n" +
1950            " }\n" +
1951            " }\n" +
1952            "}\n");
1953         String JavaDoc golden =
1954            "package personal;\n" +
1955            "\n" +
1956            "public class RenamedTest {\n" +
1957            " public Object method(Object o) {\n" +
1958            " Inner inInst = new Inner();\n" +
1959            " Inner[] inArr = new Inner[] { inInst, new Inner() };\n" +
1960            " }\n" +
1961            " private static class Inner {\n" +
1962            " public Inner() {\n" +
1963            " }\n" +
1964            " }\n" +
1965            "}\n";
1966        JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
1967        CancellableTask task = new CancellableTask<WorkingCopy>() {
1968
1969            public void run(WorkingCopy workingCopy) throws IOException JavaDoc {
1970                workingCopy.toPhase(org.netbeans.api.java.source.JavaSource.Phase.RESOLVED);
1971                TreeMaker make = workingCopy.getTreeMaker();
1972                ClassTree clazz = (ClassTree)workingCopy.getCompilationUnit().getTypeDecls().get(0);
1973                workingCopy.rewrite(clazz, make.setLabel(clazz, "RenamedTest"));
1974                MethodTree method = (MethodTree)clazz.getMembers().get(1);
1975                // body rename
1976
BlockTree block = method.getBody();
1977            }
1978            
1979            public void cancel() {
1980            }
1981        };
1982        testSource.runModificationTask(task).commit();
1983        String JavaDoc res = TestUtilities.copyFileToString(testFile);
1984        System.err.println(res);
1985        assertEquals(golden, res);
1986    }
1987    
1988    /**
1989     * Rename clazz... Test.class -> RenamedTest.class is not correctly generated
1990     * in method parameter (#92610)
1991     *
1992     */

1993    public void testRenameClazz() throws Exception JavaDoc {
1994        testFile = new File JavaDoc(getWorkDir(), "Test.java");
1995        TestUtilities.copyStringToFile(testFile,
1996            "package personal;\n" +
1997            "\n" +
1998            "public class Test {\n" +
1999            " public Object method(Class o) {\n" +
2000            " method(Test.class);\n" +
2001            " }\n" +
2002            "}\n");
2003         String JavaDoc golden =
2004            "package personal;\n" +
2005            "\n" +
2006            "public class RenamedTest {\n" +
2007            " public Object method(Class o) {\n" +
2008            " method(RenamedTest.class);\n" +
2009            " }\n" +
2010            "}\n";
2011        JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
2012        CancellableTask task = new CancellableTask<WorkingCopy>() {
2013
2014            public void run(WorkingCopy workingCopy) throws IOException JavaDoc {
2015                workingCopy.toPhase(org.netbeans.api.java.source.JavaSource.Phase.RESOLVED);
2016                TreeMaker make = workingCopy.getTreeMaker();
2017                ClassTree clazz = (ClassTree)workingCopy.getCompilationUnit().getTypeDecls().get(0);
2018                workingCopy.rewrite(clazz, make.setLabel(clazz, "RenamedTest"));
2019                MethodTree method = (MethodTree)clazz.getMembers().get(1);
2020                // body rename
2021
BlockTree block = method.getBody();
2022                ExpressionStatementTree est = (ExpressionStatementTree) block.getStatements().get(0);
2023                MethodInvocationTree mit = (MethodInvocationTree) est.getExpression();
2024                MemberSelectTree mst = (MemberSelectTree) mit.getArguments().get(0);
2025                workingCopy.rewrite(mst.getExpression(), make.Identifier("RenamedTest"));
2026            }
2027            
2028            public void cancel() {
2029            }
2030        };
2031        testSource.runModificationTask(task).commit();
2032        String JavaDoc res = TestUtilities.copyFileToString(testFile);
2033        System.err.println(res);
2034        assertEquals(golden, res);
2035    }
2036
2037    /**
2038     * Rename in case
2039     */

2040    public void testRenameInCase() throws Exception JavaDoc {
2041        testFile = new File JavaDoc(getWorkDir(), "Test.java");
2042        TestUtilities.copyStringToFile(testFile,
2043            "package personal;\n" +
2044            "\n" +
2045            "public class Test {\n" +
2046            " void method() {\n" +
2047            " int i = 10;\n" +
2048            " switch (i) {\n" +
2049            " case 0: {\n" +
2050            " System.err.println(i);\n" +
2051            " }\n" +
2052            " case 1:\n" +
2053            " i = 12;\n" +
2054            " default:\n" +
2055            " i += 7;\n" +
2056            " break;\n" +
2057            " }\n" +
2058            " }\n" +
2059            "}\n");
2060        
2061         String JavaDoc golden =
2062            "package personal;\n" +
2063            "\n" +
2064            "public class Test {\n" +
2065            " void method() {\n" +
2066            " int ycko = 10;\n" +
2067            " switch (ycko) {\n" +
2068            " case 0: {\n" +
2069            " System.err.println(ycko);\n" +
2070            " }" +
2071            "case 1:\n" +
2072            " ycko = 12;\n" +
2073            " default:\n" +
2074            " ycko += 7;\n" +
2075            " break;\n" +
2076            " }\n" +
2077            " }\n" +
2078            "}\n";
2079        JavaSource testSource = JavaSource.forFileObject(FileUtil.toFileObject(testFile));
2080        CancellableTask task = new CancellableTask<WorkingCopy>() {
2081
2082            public void run(WorkingCopy workingCopy) throws IOException JavaDoc {
2083                workingCopy.toPhase(org.netbeans.api.java.source.JavaSource.Phase.RESOLVED);
2084                TreeMaker make = workingCopy.getTreeMaker();
2085                ClassTree clazz = (ClassTree)workingCopy.getCompilationUnit().getTypeDecls().get(0);
2086                MethodTree method = (MethodTree)clazz.getMembers().get(1);
2087                BlockTree bt = method.getBody();
2088                VariableTree vt = (VariableTree) bt.getStatements().get(0);
2089                workingCopy.rewrite(vt, make.setLabel(vt, "ycko"));
2090                SwitchTree st = (SwitchTree) bt.getStatements().get(1);
2091                ParenthesizedTree pt = (ParenthesizedTree) st.getExpression();
2092                workingCopy.rewrite(pt.getExpression(), make.setLabel(pt.getExpression(), "ycko"));
2093                CaseTree kejs = st.getCases().get(0);
2094                bt = (BlockTree) kejs.getStatements().get(0);
2095                ExpressionStatementTree est = (ExpressionStatementTree) bt.getStatements().get(0);
2096                MethodInvocationTree mit = (MethodInvocationTree) est.getExpression();
2097                workingCopy.rewrite(mit.getArguments().get(0), make.Identifier("ycko"));
2098                kejs = st.getCases().get(1);
2099                est = (ExpressionStatementTree) kejs.getStatements().get(0);
2100                AssignmentTree at = (AssignmentTree) est.getExpression();
2101                workingCopy.rewrite(at.getVariable(), make.setLabel(at.getVariable(), "ycko"));
2102                kejs = st.getCases().get(2);
2103                est = (ExpressionStatementTree) kejs.getStatements().get(0);
2104                CompoundAssignmentTree cat = (CompoundAssignmentTree) est.getExpression();
2105                workingCopy.rewrite(cat.getVariable(), make.setLabel(cat.getVariable(), "ycko"));
2106            }
2107            
2108            public void cancel() {
2109            }
2110        };
2111        testSource.runModificationTask(task).commit();
2112        String JavaDoc res = TestUtilities.copyFileToString(testFile);
2113        System.err.println(res);
2114        assertEquals(golden, res);
2115    }
2116    
2117    // methods not used in this test.
2118
String JavaDoc getGoldenPckg() {
2119        return "";
2120    }
2121    
2122    String JavaDoc getSourcePckg() {
2123        return "";
2124    }
2125    
2126}
2127
Popular Tags