2
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
4
* Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
6
* The contents of this file are subject to the terms of either the GNU
7
* General Public License Version 2 only ("GPL") or the Common
8
* Development and Distribution License("CDDL") (collectively, the
9
* "License"). You may not use this file except in compliance with the
10
* License. You can obtain a copy of the License at
11
* http://www.netbeans.org/cddl-gplv2.html
12
* or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
13
* specific language governing permissions and limitations under the
14
* License. When distributing the software, include this License Header
15
* Notice in each file and include the License file at
16
* nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
17
* particular file as subject to the "Classpath" exception as provided
18
* by Sun in the GPL Version 2 section of the License file that
19
* accompanied this code. If applicable, add the following below the
20
* License Header, with the fields enclosed by brackets [] replaced by
21
* your own identifying information:
22
* "Portions Copyrighted [year] [name of copyright owner]"
26
* The Original Software is NetBeans. The Initial Developer of the Original
27
* Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
28
* Microsystems, Inc. All Rights Reserved.
30
* If you wish your version of this file to be governed by only the CDDL
31
* or only the GPL Version 2, indicate your decision by adding
32
* "[Contributor] elects to include this software in this distribution
33
* under the [CDDL or GPL Version 2] license." If you do not indicate a
34
* single choice of license, a recipient has the option to distribute
35
* your version of this file under either the CDDL, the GPL Version 2 or
36
* to extend the choice of license to its licensees as provided above.
37
* However, if you add GPL Version 2 code and therefore, elected the GPL
38
* Version 2 license, then the option applies only if the new code is
39
* made subject to such option by the copyright holder.
42
package org.netbeans.modules.j2ee.refactoring.moveclass;
45
import java.io.IOException;
46
import java.text.MessageFormat;
47
import java.util.Collection;
48
import java.util.Enumeration;
49
import java.util.Iterator;
50
import java.util.List;
51
import javax.jmi.reflect.RefObject;
52
import org.netbeans.modules.j2ee.dd.api.web.WebApp;
53
import org.netbeans.jmi.javamodel.JavaClass;
54
import org.netbeans.jmi.javamodel.Resource;
55
import org.netbeans.modules.j2ee.refactoring.Utility;
56
import org.netbeans.modules.javacore.api.JavaModel;
57
import org.netbeans.modules.javacore.internalapi.ExternalChange;
58
import org.netbeans.modules.javacore.internalapi.JavaMetamodel;
59
import org.netbeans.modules.refactoring.api.MoveClassRefactoring;
60
import org.netbeans.modules.refactoring.api.Problem;
61
import org.netbeans.modules.refactoring.spi.RefactoringElementsBag;
62
import org.netbeans.modules.refactoring.spi.RefactoringElementImplementation;
63
import org.netbeans.modules.web.api.webmodule.WebModule;
64
import org.netbeans.modules.web.taglib.TLDDataObject;
65
import org.netbeans.modules.web.taglib.TLDLoader;
66
import org.netbeans.modules.web.taglib.model.FunctionType;
67
import org.netbeans.modules.web.taglib.model.ListenerType;
68
import org.netbeans.modules.web.taglib.model.TagType;
69
import org.netbeans.modules.web.taglib.model.Taglib;
70
import org.netbeans.modules.web.taglib.model.ValidatorType;
71
import org.openide.ErrorManager;
72
import org.openide.cookies.EditorCookie;
73
import org.openide.cookies.OpenCookie;
74
import org.openide.filesystems.FileObject;
75
import org.openide.filesystems.FileUtil;
76
import org.openide.loaders.DataObject;
77
import org.openide.loaders.DataObjectNotFoundException;
78
import org.openide.util.NbBundle;
82
* @author Martin Grebac
84
public final class TldMoveClassRefactoring {
86
private static final ErrorManager err = ErrorManager.getDefault().getInstance("org.netbeans.modules.j2ee.refactoring.rename"); // NOI18N
88
public TldMoveClassRefactoring() { }
90
/** Find usages in web deployment descriptor: web.xml
92
public Problem prepare(MoveClassRefactoring moveClassRefactor, Collection resources, RefactoringElementsBag refactoringElements) {
93
Problem problem = null;
95
for (Iterator i = resources.iterator(); i.hasNext();) {
96
Resource resource = (Resource) i.next();
97
FileObject fo = JavaModel.getFileObject(resource);
99
err.log("resource package name: " + resource.getPackageName());
100
err.log("resource: name " + resource.getName());
102
WebModule wm = WebModule.getWebModule(fo);
104
FileObject target = moveClassRefactor.getTargetClassPathRoot();
105
WebModule wmNew = null;
106
if (target != null) {
107
wmNew = WebModule.getWebModule(moveClassRefactor.getTargetClassPathRoot());
110
if (wm != null) { // the class is in a web module, therefore tld makes sense
111
boolean moveToAnotherProject = false;
114
moveToAnotherProject = !wm.equals(wmNew);
117
FileObject webInf = wm.getWebInf();
118
Enumeration e = null;
119
if (webInf != null) {
120
e = webInf.getChildren(true);
123
while (e.hasMoreElements()) {
124
FileObject tld = (FileObject)e.nextElement();
125
FileObject tldNew = null;
129
DataObject tldData = null;
130
DataObject newTldData = null;
133
tldData = DataObject.find(tld);
134
} catch (DataObjectNotFoundException dne) {
138
if (moveToAnotherProject) {
139
FileObject webInfNew = wmNew.getWebInf();
140
Enumeration e2 = null;
141
if (webInfNew != null) {
142
e2 = webInfNew.getChildren(true);
144
while (e2.hasMoreElements()) {
145
tldNew = (FileObject)e2.nextElement();
148
newTldData = DataObject.find(tldNew);
150
} catch (DataObjectNotFoundException dne) {
155
if (newTldData == null) {
156
Problem newProblem = new Problem(false, NbBundle.getMessage(TldMoveClassRefactoring.class, "TXT_TaglibNotExistMoveClassOtherProjectInvalidProblem"));
157
problem = Utility.addProblemsToEnd(problem, newProblem);
162
if ((tldData != null) && (tldData instanceof TLDDataObject)) {
163
Taglib taglib = null;
165
taglib = ((TLDDataObject)tldData).getTaglib();
166
} catch (IOException ioe) {}
167
if (taglib != null) {
168
List classes = resource.getClassifiers();
169
err.log("Classes in resource: " + classes);
171
for (int j=0; j < classes.size(); j++ ) {
172
JavaClass jClass = (JavaClass)classes.get(j);
173
err.log("javaclass: "+ jClass);
175
String name = jClass.getName();
176
err.log("name: " + name);
178
String targetPackage = moveClassRefactor.getTargetPackageName(resource);
179
err.log("targetPackage: " + targetPackage);
181
String newName = targetPackage + "." + jClass.getSimpleName();
182
err.log("newname: " + newName);
185
TagType[] tagTypes = taglib.getTag();
186
if ((tagTypes != null) && (tagTypes.length > 0)) {
187
for (int tt = 0; tt < tagTypes.length; tt++) {
188
TagType tagT = tagTypes[tt];
189
String tagClass = tagT.getTagClass();
190
String teiClass = tagT.getTeiClass();
191
if (!moveToAnotherProject) {
192
if ((tagClass != null) && (tagClass.equals(name))) {
193
RefactoringElementImplementation elem = new TaglibTagClassMoveClassRefactoringElement(tldData, name, newName);
194
refactoringElements.add(moveClassRefactor, elem);
196
if ((teiClass != null) && (teiClass.equals(name))) {
197
RefactoringElementImplementation elem = new TaglibTeiClassMoveClassRefactoringElement(tldData, name, newName);
198
refactoringElements.add(moveClassRefactor, elem);
201
if (newTldData != null) {
202
if ((tagClass != null) && (tagClass.equals(name))) {
203
RefactoringElementImplementation elem = new TaglibTagClassReferenceMoveClassOtherProjectRefactoringElement(tldData, newTldData, name, newName);
204
refactoringElements.add(moveClassRefactor, elem);
206
if ((teiClass != null) && (teiClass.equals(name))) {
207
RefactoringElementImplementation elem = new TaglibTeiClassReferenceMoveClassOtherProjectRefactoringElement(tldData, newTldData, name, newName);
208
refactoringElements.add(moveClassRefactor, elem);
215
FunctionType[] functionTypes = taglib.getFunction();
216
if ((functionTypes != null) && (functionTypes.length > 0)) {
217
for (int tt = 0; tt < functionTypes.length; tt++) {
218
FunctionType functionT = functionTypes[tt];
219
String functionClass = functionT.getFunctionClass();
220
if ((functionClass != null) && (functionClass.equals(name))) {
221
RefactoringElementImplementation elem = new TaglibFunctionClassMoveClassRefactoringElement(tldData, name, newName);
222
refactoringElements.add(moveClassRefactor, elem);
228
ValidatorType validatorType = taglib.getValidator();
229
if (validatorType != null) {
230
String validatorClass = validatorType.getValidatorClass();
231
if ((validatorClass != null) && (validatorClass.equals(name))) {
232
RefactoringElementImplementation elem = new TaglibValidatorClassMoveClassRefactoringElement(tldData, name, newName);
233
refactoringElements.add(moveClassRefactor, elem);
238
org.netbeans.modules.web.taglib.model.ListenerType[] listenerTypes = taglib.getListener();
239
if ((listenerTypes != null) && (listenerTypes.length > 0)) {
240
for (int tt = 0; tt < listenerTypes.length; tt++) {
241
org.netbeans.modules.web.taglib.model.ListenerType listenerT = listenerTypes[tt];
242
String listenerClass = listenerT.getListenerClass();
243
if ((listenerClass != null) && (listenerClass.equals(name))) {
244
RefactoringElementImplementation elem = new TaglibListenerClassMoveClassRefactoringElement(tldData, name, newName);
245
refactoringElements.add(moveClassRefactor, elem);
254
Object[] args = new Object [] {tld.getNameExt()};
255
String msg = MessageFormat.format(NbBundle.getMessage(TldMoveClassRefactoring.class, "TXT_TaglibMoveClassInvalidProblem"), args);
256
Problem newProblem = new Problem(false, msg);
257
problem = Utility.addProblemsToEnd(problem, newProblem);
268
private boolean isTld(FileObject fo) {
269
boolean isTld = false;
271
String ext = fo.getExt();
272
if (TLDLoader.tldExt.equalsIgnoreCase(ext)) {
279
public final class TaglibTagClassMoveClassRefactoringElement extends AbstractMoveClassRefactoringElement implements ExternalChange {
281
protected DataObject data = null;
283
/** Creates a new instance of TaglibTagClassMoveClassRefactoringElement */
284
public TaglibTagClassMoveClassRefactoringElement(DataObject data, String oldName, String newName) {
286
this.oldName = oldName;
287
this.newName = newName;
290
/** Returns text describing the refactoring formatted for display (using HTML tags).
291
* @return Formatted text.
293
public String getDisplayText() {
294
Object[] args = new Object [] {data.getPrimaryFile().getNameExt(), oldName, newName};
295
return MessageFormat.format(NbBundle.getMessage(TldMoveClassRefactoring.class, "TXT_TaglibTagClassMoveClass"), args);
298
/** Returns file that the element affects (relates to)
301
public FileObject getParentFile() {
303
return data.getPrimaryFile();
308
/** Performs the change represented by this refactoring element.
310
public void performChange() {
311
JavaMetamodel.getManager().registerExtChange(this);
314
public void performExternalChange() {
316
FileObject tldFO = data.getPrimaryFile();
317
TLDDataObject tdo = ((TLDDataObject)data);
318
Taglib taglib = null;
320
taglib = tdo.getTaglib();
321
} catch (IOException ioe) {
324
if (taglib != null) /* TODO check validity */ {
325
err.log("perform external change: TaglibTagClassMoveClassRefactoringElement");
327
TagType[] tags = taglib.getTag();
328
for (int i=0; i < tags.length; i++) {
329
String tagClass = tags[i].getTagClass();
330
if (oldName.equals(tagClass)) {
336
tag.setTagClass(newName);
341
} catch (IOException ioe) {
342
ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, ioe.getMessage());
349
public void undoExternalChange() {
351
FileObject tldFO = data.getPrimaryFile();
352
TLDDataObject tdo = ((TLDDataObject)data);
353
Taglib taglib = null;
355
taglib = tdo.getTaglib();
356
} catch (IOException ioe) {
359
if (taglib != null) /* TODO check validity */ {
360
err.log("undo external change: TaglibTagClassMoveClassRefactoringElement");
362
TagType[] tags = taglib.getTag();
363
for (int i=0; i < tags.length; i++) {
364
String tagClass = tags[i].getTagClass();
365
if (newName.equals(tagClass)) {
371
tag.setTagClass(oldName);
376
} catch (IOException ioe) {
377
ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, ioe.getMessage());
386
public final class TaglibTagClassReferenceMoveClassOtherProjectRefactoringElement extends AbstractMoveClassRefactoringElement implements ExternalChange {
388
protected DataObject data = null;
389
protected DataObject newData = null;
391
/** Creates a new instance of TaglibTagClassReferenceMoveClassOtherProjectRefactoringElement */
392
public TaglibTagClassReferenceMoveClassOtherProjectRefactoringElement(DataObject data, DataObject newData, String oldName, String newName) {
394
this.newData = newData;
395
this.oldName = oldName;
396
this.newName = newName;
399
/** Returns text describing the refactoring formatted for display (using HTML tags).
400
* @return Formatted text.
402
public String getDisplayText() {
403
Object[] args = new Object [] {data.getPrimaryFile().getNameExt(), data.getPrimaryFile().getNameExt(), newData.getPrimaryFile().getNameExt()};
404
return MessageFormat.format(NbBundle.getMessage(TldMoveClassRefactoring.class, "TXT_TaglibTagClassReferenceMoveClassOtherProject"), args);
407
/** Returns file that the element affects (relates to)
410
public FileObject getParentFile() {
412
return data.getPrimaryFile();
417
/** Performs the change represented by this refactoring element.
419
public void performChange() {
420
JavaMetamodel.getManager().registerExtChange(this);
423
public void performExternalChange() {
425
FileObject tldFO = data.getPrimaryFile();
426
TLDDataObject tdo = ((TLDDataObject)data);
428
FileObject newTldFO = newData.getPrimaryFile();
429
TLDDataObject newTdo = ((TLDDataObject)newData);
431
Taglib taglib = null;
432
Taglib newTaglib = null;
434
taglib = tdo.getTaglib();
435
newTaglib = newTdo.getTaglib();
436
} catch (IOException ioe) {
439
if ((taglib != null) && (newTaglib != null)) /* TODO check validity */ {
440
err.log("perform external change: TaglibTagClassReferenceMoveClassOtherProject");
442
TagType[] tags = taglib.getTag();
443
for (int i=0; i < tags.length; i++) {
444
String tagClass = tags[i].getTagClass();
445
if (oldName.equals(tagClass)) {
451
taglib.removeTag(tag);
452
tag.setTagClass(newName);
453
newTaglib.addTag(tag);
458
if (newTdo != null) {
459
newTdo.write(newTaglib);
461
} catch (IOException ioe) {
462
ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, ioe.getMessage());
469
public void undoExternalChange() {
471
FileObject tldFO = data.getPrimaryFile();
472
TLDDataObject tdo = ((TLDDataObject)data);
474
FileObject newTldFO = newData.getPrimaryFile();
475
TLDDataObject newTdo = ((TLDDataObject)newData);
477
Taglib taglib = null;
478
Taglib newTaglib = null;
480
taglib = tdo.getTaglib();
481
newTaglib = newTdo.getTaglib();
482
} catch (IOException ioe) {
485
if ((taglib != null) && (newTaglib != null)) /* TODO check validity */ {
486
err.log("perform external change: TaglibTagClassReferenceMoveClassOtherProject");
488
TagType[] tags = newTaglib.getTag();
489
for (int i=0; i < tags.length; i++) {
490
String tagClass = tags[i].getTagClass();
491
if (newName.equals(tagClass)) {
497
newTaglib.removeTag(tag);
498
tag.setTagClass(oldName);
504
if (newTdo != null) {
505
newTdo.write(newTaglib);
507
} catch (IOException ioe) {
508
ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, ioe.getMessage());
517
public final class TaglibTeiClassMoveClassRefactoringElement extends AbstractMoveClassRefactoringElement implements ExternalChange {
519
protected DataObject data = null;
521
/** Creates a new instance of TaglibTeiClassMoveClassRefactoringElement */
522
public TaglibTeiClassMoveClassRefactoringElement(DataObject data, String oldName, String newName) {
524
this.oldName = oldName;
525
this.newName = newName;
528
/** Returns text describing the refactoring formatted for display (using HTML tags).
529
* @return Formatted text.
531
public String getDisplayText() {
532
Object[] args = new Object [] {data.getPrimaryFile().getNameExt(), oldName, newName};
533
return MessageFormat.format(NbBundle.getMessage(TldMoveClassRefactoring.class, "TXT_TaglibTeiClassMoveClass"), args);
536
/** Returns file that the element affects (relates to)
539
public FileObject getParentFile() {
541
return data.getPrimaryFile();
546
/** Performs the change represented by this refactoring element.
548
public void performChange() {
549
JavaMetamodel.getManager().registerExtChange(this);
552
public void performExternalChange() {
554
FileObject tldFO = data.getPrimaryFile();
555
TLDDataObject tdo = ((TLDDataObject)data);
556
Taglib taglib = null;
558
taglib = tdo.getTaglib();
559
} catch (IOException ioe) {
562
if (taglib != null) /* TODO check validity */ {
564
TagType[] tags = taglib.getTag();
565
for (int i=0; i < tags.length; i++) {
566
String teiClass = tags[i].getTagClass();
567
if (oldName.equals(teiClass)) {
573
tag.setTeiClass(newName);
578
} catch (IOException ioe) {
579
ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, ioe.getMessage());
586
public void undoExternalChange() {
588
FileObject tldFO = data.getPrimaryFile();
589
TLDDataObject tdo = ((TLDDataObject)data);
590
Taglib taglib = null;
592
taglib = tdo.getTaglib();
593
} catch (IOException ioe) {
596
if (taglib != null) /* TODO check validity */ {
598
TagType[] tags = taglib.getTag();
599
for (int i=0; i < tags.length; i++) {
600
String teiClass = tags[i].getTagClass();
601
if (newName.equals(teiClass)) {
607
tag.setTeiClass(oldName);
612
} catch (IOException ioe) {
613
ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, ioe.getMessage());
622
public final class TaglibTeiClassReferenceMoveClassOtherProjectRefactoringElement extends AbstractMoveClassRefactoringElement implements ExternalChange {
624
protected DataObject data = null;
625
protected DataObject newData = null;
627
/** Creates a new instance of TaglibTeiClassReferenceMoveClassOtherProjectRefactoringElement */
628
public TaglibTeiClassReferenceMoveClassOtherProjectRefactoringElement(DataObject data, DataObject newData, String oldName, String newName) {
630
this.newData = newData;
631
this.oldName = oldName;
632
this.newName = newName;
635
/** Returns text describing the refactoring formatted for display (using HTML tags).
636
* @return Formatted text.
638
public String getDisplayText() {
639
Object[] args = new Object [] {data.getPrimaryFile().getNameExt(), oldName, newName};
640
return MessageFormat.format(NbBundle.getMessage(TldMoveClassRefactoring.class, "TXT_TaglibTeiClassReferenceMoveClassOtherProject"), args);
643
/** Returns file that the element affects (relates to)
646
public FileObject getParentFile() {
648
return data.getPrimaryFile();
653
/** Performs the change represented by this refactoring element.
655
public void performChange() {
656
JavaMetamodel.getManager().registerExtChange(this);
659
public void performExternalChange() {
661
FileObject tldFO = data.getPrimaryFile();
662
TLDDataObject tdo = ((TLDDataObject)data);
664
FileObject newTldFO = newData.getPrimaryFile();
665
TLDDataObject newTdo = ((TLDDataObject)newData);
667
Taglib taglib = null;
668
Taglib newTaglib = null;
670
taglib = tdo.getTaglib();
671
newTaglib = newTdo.getTaglib();
672
} catch (IOException ioe) {
675
if ((taglib != null) && (newTaglib != null)) /* TODO check validity */ {
676
err.log("perform external change: TaglibTagClassReferenceMoveClassOtherProject");
678
TagType[] tags = taglib.getTag();
679
for (int i=0; i < tags.length; i++) {
680
String teiClass = tags[i].getTeiClass();
681
if (oldName.equals(teiClass)) {
687
taglib.removeTag(tag);
688
tag.setTeiClass(newName);
689
newTaglib.addTag(tag);
694
if (newTdo != null) {
695
newTdo.write(newTaglib);
697
} catch (IOException ioe) {
698
ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, ioe.getMessage());
705
public void undoExternalChange() {
707
FileObject tldFO = data.getPrimaryFile();
708
TLDDataObject tdo = ((TLDDataObject)data);
710
FileObject newTldFO = newData.getPrimaryFile();
711
TLDDataObject newTdo = ((TLDDataObject)newData);
713
Taglib taglib = null;
714
Taglib newTaglib = null;
716
taglib = tdo.getTaglib();
717
newTaglib = newTdo.getTaglib();
718
} catch (IOException ioe) {
721
if ((taglib != null) && (newTaglib != null)) /* TODO check validity */ {
722
err.log("undo external change: TaglibTagClassReferenceMoveClassOtherProject");
724
TagType[] tags = newTaglib.getTag();
725
for (int i=0; i < tags.length; i++) {
726
String teiClass = tags[i].getTeiClass();
727
if (newName.equals(teiClass)) {
733
newTaglib.removeTag(tag);
734
tag.setTeiClass(oldName);
740
if (newTdo != null) {
741
newTdo.write(newTaglib);
743
} catch (IOException ioe) {
744
ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, ioe.getMessage());
753
public final class TaglibFunctionClassMoveClassRefactoringElement extends AbstractMoveClassRefactoringElement implements ExternalChange {
755
protected DataObject data;
757
/** Creates a new instance of TaglibFunctionClassMoveClassRefactoringElement */
758
public TaglibFunctionClassMoveClassRefactoringElement(DataObject data, String oldName, String newName) {
760
this.oldName = oldName;
761
this.newName = newName;
764
/** Returns text describing the refactoring formatted for display (using HTML tags).
765
* @return Formatted text.
767
public String getDisplayText() {
768
Object[] args = new Object [] {data.getPrimaryFile().getNameExt(), oldName, newName};
769
return MessageFormat.format(NbBundle.getMessage(TldMoveClassRefactoring.class, "TXT_TaglibFunctionClassMoveClass"), args);
772
/** Performs the change represented by this refactoring element.
774
public void performChange() {
775
JavaMetamodel.getManager().registerExtChange(this);
778
/** Returns file that the element affects (relates to)
781
public FileObject getParentFile() {
783
return data.getPrimaryFile();
788
public void performExternalChange() {
790
FileObject tldFO = data.getPrimaryFile();
791
TLDDataObject tdo = ((TLDDataObject)data);
792
Taglib taglib = null;
794
taglib = tdo.getTaglib();
795
} catch (IOException ioe) {
798
if (taglib != null) /* TODO check validity */ {
799
FunctionType function = null;
800
FunctionType[] functions = taglib.getFunction();
801
for (int i=0; i < functions.length; i++) {
802
String functionClass = functions[i].getFunctionClass();
803
if (oldName.equals(functionClass)) {
804
function = functions[i];
808
if (function!=null) {
809
function.setFunctionClass(newName);
814
} catch (IOException ioe) {
815
ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, ioe.getMessage());
822
public void undoExternalChange() {
824
FileObject tldFO = data.getPrimaryFile();
825
TLDDataObject tdo = ((TLDDataObject)data);
826
Taglib taglib = null;
828
taglib = tdo.getTaglib();
829
} catch (IOException ioe) {
832
if (taglib != null) /* TODO check validity */ {
833
FunctionType function = null;
834
FunctionType[] functions = taglib.getFunction();
835
for (int i=0; i < functions.length; i++) {
836
String functionClass = functions[i].getFunctionClass();
837
if (newName.equals(functionClass)) {
838
function = functions[i];
842
if (function!=null) {
843
function.setFunctionClass(oldName);
848
} catch (IOException ioe) {
849
ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, ioe.getMessage());
858
public final class TaglibFunctionClassReferenceMoveClassOtherProjectRefactoringElement extends AbstractMoveClassRefactoringElement implements ExternalChange {
860
protected DataObject data = null;
861
protected DataObject newData = null;
863
/** Creates a new instance of TaglibFunctionClassReferenceMoveClassOtherProjectRefactoringElement */
864
public TaglibFunctionClassReferenceMoveClassOtherProjectRefactoringElement(DataObject data, DataObject newData, String oldName, String newName) {
866
this.newData = newData;
867
this.oldName = oldName;
868
this.newName = newName;
871
/** Returns text describing the refactoring formatted for display (using HTML tags).
872
* @return Formatted text.
874
public String getDisplayText() {
875
Object[] args = new Object [] {data.getPrimaryFile().getNameExt(), oldName, newName};
876
return MessageFormat.format(NbBundle.getMessage(TldMoveClassRefactoring.class, "TXT_TaglibFunctionClassReferenceMoveClassOtherProject"), args);
879
/** Returns file that the element affects (relates to)
882
public FileObject getParentFile() {
884
return data.getPrimaryFile();
889
/** Performs the change represented by this refactoring element.
891
public void performChange() {
892
JavaMetamodel.getManager().registerExtChange(this);
895
public void performExternalChange() {
897
FileObject tldFO = data.getPrimaryFile();
898
TLDDataObject tdo = ((TLDDataObject)data);
900
FileObject newTldFO = newData.getPrimaryFile();
901
TLDDataObject newTdo = ((TLDDataObject)newData);
903
Taglib taglib = null;
904
Taglib newTaglib = null;
906
taglib = tdo.getTaglib();
907
newTaglib = newTdo.getTaglib();
908
} catch (IOException ioe) {
911
if ((taglib != null) && (newTaglib != null)) /* TODO check validity */ {
912
err.log("perform external change: TaglibFunctionClassReferenceMoveClassOtherProjectRefactoringElement");
913
FunctionType function = null;
914
FunctionType[] functions = taglib.getFunction();
915
for (int i=0; i < functions.length; i++) {
916
String functionClass = functions[i].getFunctionClass();
917
if (oldName.equals(functionClass)) {
918
function = functions[i];
922
if (function != null) {
923
taglib.removeFunction(function);
924
function.setFunctionClass(newName);
925
newTaglib.addFunction(function);
930
if (newTdo != null) {
931
newTdo.write(newTaglib);
933
} catch (IOException ioe) {
934
ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, ioe.getMessage());
941
public void undoExternalChange() {
943
FileObject tldFO = data.getPrimaryFile();
944
TLDDataObject tdo = ((TLDDataObject)data);
946
FileObject newTldFO = newData.getPrimaryFile();
947
TLDDataObject newTdo = ((TLDDataObject)newData);
949
Taglib taglib = null;
950
Taglib newTaglib = null;
952
taglib = tdo.getTaglib();
953
newTaglib = newTdo.getTaglib();
954
} catch (IOException ioe) {
957
if ((taglib != null) && (newTaglib != null)) /* TODO check validity */ {
958
err.log("undo external change: TaglibFunctionClassReferenceMoveClassOtherProjectRefactoringElement");
959
FunctionType function = null;
960
FunctionType[] functions = newTaglib.getFunction();
961
for (int i=0; i < functions.length; i++) {
962
String functionClass = functions[i].getFunctionClass();
963
if (newName.equals(functionClass)) {
964
function = functions[i];
968
if (function != null) {
969
newTaglib.removeFunction(function);
970
function.setFunctionClass(oldName);
971
taglib.addFunction(function);
976
if (newTdo != null) {
977
newTdo.write(newTaglib);
979
} catch (IOException ioe) {
980
ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, ioe.getMessage());
988
public final class TaglibValidatorClassMoveClassRefactoringElement extends AbstractMoveClassRefactoringElement implements ExternalChange {
990
protected DataObject data;
992
/** Creates a new instance of TaglibValidatorClassMoveClassRefactoringElement */
993
public TaglibValidatorClassMoveClassRefactoringElement(DataObject data, String oldName, String newName) {
995
this.oldName = oldName;
996
this.newName = newName;
999
/** Returns text describing the refactoring formatted for display (using HTML tags).
1000
* @return Formatted text.
1002
public String getDisplayText() {
1003
Object[] args = new Object [] {data.getPrimaryFile().getNameExt(), oldName, newName};
1004
return MessageFormat.format(NbBundle.getMessage(TldMoveClassRefactoring.class, "TXT_TaglibValidatorClassMoveClass"), args);
1007
/** Returns file that the element affects (relates to)
1010
public FileObject getParentFile() {
1012
return data.getPrimaryFile();
1017
/** Performs the change represented by this refactoring element.
1019
public void performChange() {
1020
JavaMetamodel.getManager().registerExtChange(this);
1023
public void performExternalChange() {
1025
FileObject tldFO = data.getPrimaryFile();
1026
TLDDataObject tdo = ((TLDDataObject)data);
1027
Taglib taglib = null;
1029
taglib = tdo.getTaglib();
1030
} catch (IOException ioe) {
1033
if (taglib != null) /* TODO check validity */ {
1034
ValidatorType validator = taglib.getValidator();
1035
if (validator!=null) {
1036
validator.setValidatorClass(newName);
1041
} catch (IOException ioe) {
1042
ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, ioe.getMessage());
1049
public void undoExternalChange() {
1051
FileObject tldFO = data.getPrimaryFile();
1052
Taglib taglib = null;
1053
TLDDataObject tdo = ((TLDDataObject)data);
1055
taglib = tdo.getTaglib();
1056
} catch (IOException ioe) {
1059
if (taglib != null) /* TODO check validity */ {
1060
ValidatorType validator = taglib.getValidator();
1061
if (validator!=null) {
1062
validator.setValidatorClass(oldName);
1067
} catch (IOException ioe) {
1068
ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, ioe.getMessage());
1076
public final class TaglibValidatorClassReferenceMoveClassOtherProjectRefactoringElement extends AbstractMoveClassRefactoringElement implements ExternalChange {
1078
protected DataObject data = null;
1079
protected DataObject newData = null;
1081
/** Creates a new instance of TaglibValidatorClassReferenceMoveClassOtherProjectRefactoringElement */
1082
public TaglibValidatorClassReferenceMoveClassOtherProjectRefactoringElement(DataObject data, DataObject newData, String oldName, String newName) {
1084
this.newData = newData;
1085
this.oldName = oldName;
1086
this.newName = newName;
1089
/** Returns text describing the refactoring formatted for display (using HTML tags).
1090
* @return Formatted text.
1092
public String getDisplayText() {
1093
Object[] args = new Object [] {data.getPrimaryFile().getNameExt(), oldName, newName};
1094
return MessageFormat.format(NbBundle.getMessage(TldMoveClassRefactoring.class, "TXT_TaglibValidatorClassReferenceMoveClassOtherProject"), args);
1097
/** Returns file that the element affects (relates to)
1100
public FileObject getParentFile() {
1102
return data.getPrimaryFile();
1107
/** Performs the change represented by this refactoring element.
1109
public void performChange() {
1110
JavaMetamodel.getManager().registerExtChange(this);
1113
public void performExternalChange() {
1115
FileObject tldFO = data.getPrimaryFile();
1116
TLDDataObject tdo = ((TLDDataObject)data);
1118
FileObject newTldFO = newData.getPrimaryFile();
1119
TLDDataObject newTdo = ((TLDDataObject)newData);
1121
Taglib taglib = null;
1122
Taglib newTaglib = null;
1124
taglib = tdo.getTaglib();
1125
newTaglib = newTdo.getTaglib();
1126
} catch (IOException ioe) {
1129
if ((taglib != null) && (newTaglib != null)) /* TODO check validity */ {
1130
err.log("perform external change: TaglibValidatorClassReferenceMoveClassOtherProjectRefactoringElement");
1131
ValidatorType validator = taglib.getValidator();
1132
if (validator != null) {
1133
String validatorClass = validator.getValidatorClass();
1134
if (oldName.equals(validatorClass)) {
1136
// TODO - this is missing in the TLD api, why?
1137
// taglib.removeValidator(validator);
1138
// validator.setValidatorClass(newName);
1139
// newTaglib.addValidator(validator);
1144
if (newTdo != null) {
1145
newTdo.write(newTaglib);
1147
} catch (IOException ioe) {
1148
ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, ioe.getMessage());
1156
public void undoExternalChange() {
1158
FileObject tldFO = data.getPrimaryFile();
1159
TLDDataObject tdo = ((TLDDataObject)data);
1161
FileObject newTldFO = newData.getPrimaryFile();
1162
TLDDataObject newTdo = ((TLDDataObject)newData);
1164
Taglib taglib = null;
1165
Taglib newTaglib = null;
1167
taglib = tdo.getTaglib();
1168
newTaglib = newTdo.getTaglib();
1169
} catch (IOException ioe) {
1172
if ((taglib != null) && (newTaglib != null)) /* TODO check validity */ {
1173
err.log("undo external change: TaglibValidatorClassReferenceMoveClassOtherProjectRefactoringElement");
1174
ValidatorType validator = newTaglib.getValidator();
1175
if (validator != null) {
1176
String validatorClass = validator.getValidatorClass();
1177
if (newName.equals(validatorClass)) {
1178
// TODO - this is missing in the TLD api, why?
1179
// newTaglib.removeValidator(validator);
1180
// function.setValidatorClass(oldName);
1181
// taglib.addValidator(validator);
1186
if (newTdo != null) {
1187
newTdo.write(newTaglib);
1189
} catch (IOException ioe) {
1190
ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, ioe.getMessage());
1199
public final class TaglibListenerClassMoveClassRefactoringElement extends AbstractMoveClassRefactoringElement implements ExternalChange {
1201
protected DataObject data;
1203
/** Creates a new instance of TaglibListenerClassMoveClassRefactoringElement */
1204
public TaglibListenerClassMoveClassRefactoringElement(DataObject data, String oldName, String newName) {
1206
this.oldName = oldName;
1207
this.newName = newName;
1210
/** Returns text describing the refactoring formatted for display (using HTML tags).
1211
* @return Formatted text.
1213
public String getDisplayText() {
1214
Object[] args = new Object [] {data.getPrimaryFile().getNameExt(), oldName, newName};
1215
return MessageFormat.format(NbBundle.getMessage(TldMoveClassRefactoring.class, "TXT_TaglibListenerClassMoveClass"), args);
1218
/** Returns file that the element affects (relates to)
1221
public FileObject getParentFile() {
1223
return data.getPrimaryFile();
1228
/** Performs the change represented by this refactoring element.
1230
public void performChange() {
1231
JavaMetamodel.getManager().registerExtChange(this);
1234
public void performExternalChange() {
1236
FileObject tldFO = data.getPrimaryFile();
1237
TLDDataObject tdo = ((TLDDataObject)data);
1238
Taglib taglib = null;
1240
taglib = tdo.getTaglib();
1241
} catch (IOException ioe) {
1244
if (taglib != null) /* TODO check validity */ {
1245
org.netbeans.modules.web.taglib.model.ListenerType listener = null;
1246
org.netbeans.modules.web.taglib.model.ListenerType[] listeners = taglib.getListener();
1247
for (int i=0; i < listeners.length; i++) {
1248
String listenerClass = listeners[i].getListenerClass();
1249
if (oldName.equals(listenerClass)) {
1250
listener = listeners[i];
1254
if (listener!=null) {
1255
listener.setListenerClass(newName);
1260
} catch (IOException ioe) {
1261
ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, ioe.getMessage());
1268
public void undoExternalChange() {
1270
FileObject tldFO = data.getPrimaryFile();
1271
TLDDataObject tdo = ((TLDDataObject)data);
1272
Taglib taglib = null;
1274
taglib = tdo.getTaglib();
1275
} catch (IOException ioe) {
1278
if (taglib != null) /* TODO check validity */ {
1279
org.netbeans.modules.web.taglib.model.ListenerType listener = null;
1280
org.netbeans.modules.web.taglib.model.ListenerType[] listeners = taglib.getListener();
1281
for (int i=0; i < listeners.length; i++) {
1282
String listenerClass = listeners[i].getListenerClass();
1283
if (newName.equals(listenerClass)) {
1284
listener = listeners[i];
1288
if (listener!=null) {
1289
listener.setListenerClass(oldName);
1294
} catch (IOException ioe) {
1295
ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, ioe.getMessage());
1304
public final class TaglibListenerClassReferenceMoveClassOtherProjectRefactoringElement extends AbstractMoveClassRefactoringElement implements ExternalChange {
1306
protected DataObject data = null;
1307
protected DataObject newData = null;
1309
/** Creates a new instance of TaglibListenerClassReferenceMoveClassOtherProjectRefactoringElement */
1310
public TaglibListenerClassReferenceMoveClassOtherProjectRefactoringElement(DataObject data, DataObject newData, String oldName, String newName) {
1312
this.newData = newData;
1313
this.oldName = oldName;
1314
this.newName = newName;
1317
/** Returns text describing the refactoring formatted for display (using HTML tags).
1318
* @return Formatted text.
1320
public String getDisplayText() {
1321
Object[] args = new Object [] {data.getPrimaryFile().getNameExt(), oldName, newName};
1322
return MessageFormat.format(NbBundle.getMessage(TldMoveClassRefactoring.class, "TXT_TaglibListenerClassReferenceMoveClassOtherProject"), args);
1325
/** Returns file that the element affects (relates to)
1328
public FileObject getParentFile() {
1330
return data.getPrimaryFile();
1335
/** Performs the change represented by this refactoring element.
1337
public void performChange() {
1338
JavaMetamodel.getManager().registerExtChange(this);
1341
public void performExternalChange() {
1343
FileObject tldFO = data.getPrimaryFile();
1344
TLDDataObject tdo = ((TLDDataObject)data);
1346
FileObject newTldFO = newData.getPrimaryFile();
1347
TLDDataObject newTdo = ((TLDDataObject)newData);
1349
Taglib taglib = null;
1350
Taglib newTaglib = null;
1352
taglib = tdo.getTaglib();
1353
newTaglib = newTdo.getTaglib();
1354
} catch (IOException ioe) {
1357
if ((taglib != null) && (newTaglib != null)) /* TODO check validity */ {
1358
err.log("perform external change: TaglibListenerClassReferenceMoveClassOtherProjectRefactoringElement");
1359
ListenerType listener = null;
1360
ListenerType[] listeners = taglib.getListener();
1361
for (int i=0; i < listeners.length; i++) {
1362
String listenerClass = listeners[i].getListenerClass();
1363
if (oldName.equals(listenerClass)) {
1364
listener = listeners[i];
1368
if (listener != null) {
1369
taglib.removeListener(listener);
1370
listener.setListenerClass(newName);
1371
newTaglib.addListener(listener);
1376
if (newTdo != null) {
1377
newTdo.write(newTaglib);
1379
} catch (IOException ioe) {
1380
ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, ioe.getMessage());
1387
public void undoExternalChange() {
1389
FileObject tldFO = data.getPrimaryFile();
1390
TLDDataObject tdo = ((TLDDataObject)data);
1392
FileObject newTldFO = newData.getPrimaryFile();
1393
TLDDataObject newTdo = ((TLDDataObject)newData);
1395
Taglib taglib = null;
1396
Taglib newTaglib = null;
1398
taglib = tdo.getTaglib();
1399
newTaglib = newTdo.getTaglib();
1400
} catch (IOException ioe) {
1403
if ((taglib != null) && (newTaglib != null)) /* TODO check validity */ {
1404
err.log("undo external change: TaglibListenerClassReferenceMoveClassOtherProjectRefactoringElement");
1405
ListenerType listener = null;
1406
ListenerType[] listeners = newTaglib.getListener();
1407
for (int i=0; i < listeners.length; i++) {
1408
String listenerClass = listeners[i].getListenerClass();
1409
if (newName.equals(listenerClass)) {
1410
listener = listeners[i];
1414
if (listener != null) {
1415
newTaglib.removeListener(listener);
1416
listener.setListenerClass(oldName);
1417
taglib.addListener(listener);
1422
if (newTdo != null) {
1423
newTdo.write(newTaglib);
1425
} catch (IOException ioe) {
1426
ErrorManager.getDefault().log(ErrorManager.INFORMATIONAL, ioe.getMessage());