Author: dazarov
Date: 2011-08-12 14:35:39 -0400 (Fri, 12 Aug 2011)
New Revision: 33858
Modified:
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/refactoring/RefactorSearcher.java
Log:
https://issues.jboss.org/browse/JBIDE-9473
Modified:
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/refactoring/RefactorSearcher.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/refactoring/RefactorSearcher.java 2011-08-12
18:18:27 UTC (rev 33857)
+++
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/refactoring/RefactorSearcher.java 2011-08-12
18:35:39 UTC (rev 33858)
@@ -10,6 +10,7 @@
******************************************************************************/
package org.jboss.tools.jst.web.kb.refactoring;
+import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
@@ -255,6 +256,7 @@
IRelevanceCheck[] checks = getRelevanceChecks(resolvers);
if(javaElement != null){
+ List<MatchArea> areas = new ArrayList<MatchArea>();
for(ELReference reference : references){
int offset = reference.getStartPosition();
for(ELExpression operand : reference.getEl()){
@@ -276,7 +278,13 @@
continue;
for(ELSegment segment : segments){
- match(file, offset+segment.getSourceReference().getStartPosition(),
segment.getSourceReference().getLength());
+ int o = offset+segment.getSourceReference().getStartPosition();
+ int l = segment.getSourceReference().getLength();
+
+ if(!contains(areas, o, l)){
+ match(file, o, l);
+ areas.add(new MatchArea(o, l));
+ }
}
}
}
@@ -296,6 +304,24 @@
}
}
}
+
+ class MatchArea{
+ int offset;
+ int length;
+
+ public MatchArea(int offset, int length){
+ this.offset = offset;
+ this.length = length;
+ }
+ }
+
+ private boolean contains(List<MatchArea> list, int offset, int length){
+ for(MatchArea area : list){
+ if(area.offset == offset && area.length == length)
+ return true;
+ }
+ return false;
+ }
protected IRelevanceCheck[] getRelevanceChecks(ELResolver[] resolvers) {
if(resolvers == null) return new IRelevanceCheck[0];