diff options
author | Patrik Lindström <patrik@vaadin.com> | 2013-10-09 16:19:00 +0300 |
---|---|---|
committer | Patrik Lindström <patrik@vaadin.com> | 2013-10-09 16:25:30 +0300 |
commit | c2b81b20ca3a981b775ac5f16506861724119df4 (patch) | |
tree | 26596d88abae6c08af803f1c16c79d2163771fb0 | |
parent | 5cc968b378ccf99ed511deaadd8c47073c300365 (diff) | |
download | vaadin-framework-c2b81b20ca3a981b775ac5f16506861724119df4.tar.gz vaadin-framework-c2b81b20ca3a981b775ac5f16506861724119df4.zip |
Accept "=" in caption/id strings (#12737)
Change-Id: I220fe86bcbfbf1c7188d7da78bb0ee446a5df7c2
-rw-r--r-- | client/src/com/vaadin/client/componentlocator/VaadinFinderLocatorStrategy.java | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/client/src/com/vaadin/client/componentlocator/VaadinFinderLocatorStrategy.java b/client/src/com/vaadin/client/componentlocator/VaadinFinderLocatorStrategy.java index a95b2013ed..264574788c 100644 --- a/client/src/com/vaadin/client/componentlocator/VaadinFinderLocatorStrategy.java +++ b/client/src/com/vaadin/client/componentlocator/VaadinFinderLocatorStrategy.java @@ -51,7 +51,6 @@ import com.vaadin.shared.AbstractComponentState; public class VaadinFinderLocatorStrategy implements LocatorStrategy { public static final String SUBPART_SEPARATOR = "#"; - private ComponentLocator componentLocator; public VaadinFinderLocatorStrategy(ComponentLocator componentLocator) { @@ -215,19 +214,22 @@ public class VaadinFinderLocatorStrategy implements LocatorStrategy { */ private ComponentConnector filterPotentialMatches( List<ComponentConnector> potentialMatches, String predicateString) { + if (potentialMatches.isEmpty()) { return null; } if (predicateString != null) { - String[] parts = predicateString.split("="); - if (parts.length == 1) { - int index = Integer.valueOf(predicateString); - return index < potentialMatches.size() ? potentialMatches - .get(index) : null; - } else { - String propertyName = parts[0].trim(); - String value = unquote(parts[1].trim()); + + int split_idx = predicateString.indexOf('='); + + if (split_idx != -1) { + + String propertyName = predicateString.substring(0, split_idx) + .trim(); + String value = unquote(predicateString.substring(split_idx + 1) + .trim()); + for (ComponentConnector connector : potentialMatches) { Property property = AbstractConnector.getStateType( connector).getProperty(propertyName); @@ -236,8 +238,14 @@ public class VaadinFinderLocatorStrategy implements LocatorStrategy { return connector; } } + + } else { + int index = Integer.valueOf(predicateString); + return index < potentialMatches.size() ? potentialMatches + .get(index) : null; } } + return potentialMatches.get(0); } |