Author: scabanovich
Date: 2009-05-14 07:46:04 -0400 (Thu, 14 May 2009)
New Revision: 15247
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/PositionSearcher.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-4312
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/PositionSearcher.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/PositionSearcher.java 2009-05-14
08:03:37 UTC (rev 15246)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/PositionSearcher.java 2009-05-14
11:46:04 UTC (rev 15247)
@@ -10,6 +10,8 @@
******************************************************************************/
package org.jboss.tools.common.model.util;
+import java.util.StringTokenizer;
+
import org.jboss.tools.common.meta.XAttribute;
import org.jboss.tools.common.model.XModelObject;
@@ -67,7 +69,7 @@
if(xml == null || xml.length() == 0) return;
if(xml.indexOf(".") < 0) {
String s = text.substring(startPosition, endPosition);
- int i1 = s.indexOf(xml);
+ int i1 = findAttrPosition(s, xml);
if(selectAttributeName) {
if(i1 < 0) return;
startPosition = startPosition + i1;
@@ -102,6 +104,31 @@
}
}
}
+
+ private int findAttrPosition(String s, String name) {
+ int i = s.indexOf(name);
+ if(i < 0) {
+ return -1;
+ }
+ StringTokenizer st = new StringTokenizer(s, "\"", true);
+ int pos = 0;
+ boolean inValue = false;
+ while(st.hasMoreTokens()) {
+ String t = st.nextToken();
+ if(t.equals("\"")) {
+ inValue = !inValue;
+ } else {
+ if(!inValue) {
+ int k = t.indexOf(name);
+ if(k >= 0) {
+ return pos + k;
+ }
+ }
+ }
+ pos += t.length();
+ }
+ return -1;
+ }
public int getStartPosition() {
return startPosition;