/** * Returns a new <code>Map.Entry</code> object with key and value from this pair. * * @return a MapEntry instance */ public Map.Entry<K, V> toMapEntry() { return new DefaultMapEntry<>(this); }
@Override public <T> T[] toArray(final T[] arr) { // special implementation to handle disappearing entries final ArrayList<Map.Entry<K, V>> list = new ArrayList<>(size()); for (final Map.Entry<K, V> entry : this) { list.add(new DefaultMapEntry<>(entry)); } return list.toArray(arr); } }
private Map.Entry<Field<?>, Object> mapSet(Map.Entry<String, Object> entry) { return new DefaultMapEntry<>(field(entry.getKey()), entry.getValue()); }
/** * For example: * <ul> * <li>.something : the value will be set to the property of root named 'something' * <li>child1.child2.prop : the value will be mapped u getChild1().getChild2().setProp() * </ul> */ private Entry<BeanWrapper, String> findWrapperPropertyByPath(BeanWrapper root, BeanWrapper current, String path) { int dotIdx = path.indexOf("."); if (dotIdx < 0) { return new DefaultMapEntry<BeanWrapper, String>(current, path); } BeanWrapper base = current; String nextPath = path; if (path.startsWith("../")) { base = new BeanWrapperImpl(ParsingContextExecution.getParent(current)); nextPath = path.substring(3); } else if (path.startsWith(".")) { base = root; nextPath = path.substring(1); } else { String wrapperCandidateName = path.substring(0, path.indexOf(".")); Object wrapperCandidate = current.getPropertyValue(wrapperCandidateName); base = new BeanWrapperImpl(wrapperCandidate); nextPath = path.substring(path.indexOf(".") + 1); } return findWrapperPropertyByPath(root, base, nextPath); }