@Override
protected boolean doValidate(Validation validation, String name, Object value, Out<Object> out) {
if(!(value instanceof Map)) {
validation.addError(name, "Invalid value, must be a map");
return false;
}
if(null != valueValidator) {
Map map = (Map)value;
Map converted = null;
Out<Object> entryOut = new Out<>();
for(Object object : map.entrySet()) {
Map.Entry entry = (Map.Entry)object;
if(!valueValidator.validate(validation, qname(name, entry.getKey().toString()), entry.getValue(), entryOut)) {
return false;
}
if(entryOut.isPresent()) {
if(null == converted) {
converted = new HashMap();
}
converted.put(entry.getKey(), entryOut.getAndReset());
}
}
if(null != converted) {
map.putAll(converted);
}
}
return true;
}