private Field processMapField ( Object value, String fieldName) { return new EntityObjectField( fieldName, fromMap( (Map<String, Object>)value, false)); }
/** * Sets field in result map with support for nested fields via recursion. * * @param result The result map of filtered fields * @param parts The parts of the field name (more than one if field is nested) * @param fieldMap Map of fields of the object */ private void nestedFieldSet( Map<String, Field> result, String[] parts, Map<String, Field> fieldMap) { if ( parts.length > 0 ) { if ( fieldMap.containsKey( parts[0] )) { Field field = fieldMap.get( parts[0] ); if ( field instanceof EntityObjectField ) { EntityObjectField eof = (EntityObjectField)field; result.putIfAbsent( parts[0], new EntityObjectField( parts[0], new EntityObject() ) ); // recursion nestedFieldSet( ((EntityObjectField)result.get( parts[0] )).getValue().getFieldMap(), Arrays.copyOfRange(parts, 1, parts.length), eof.getValue().getFieldMap()); } else { result.put( parts[0], field ); } } } }
/** * Check to see if field should be included in filtered result with support for nested fields via recursion. * * @param parts The parts of the field name (more than one if field is nested) * @param fieldMap Map of fields of the object */ private boolean nestedFieldCheck( String[] parts, Map<String, Field> fieldMap) { if ( parts.length > 0 ) { if ( fieldMap.containsKey( parts[0] )) { Field field = fieldMap.get( parts[0] ); if ( field instanceof EntityObjectField ) { EntityObjectField eof = (EntityObjectField)field; // recursion return nestedFieldCheck( Arrays.copyOfRange(parts, 1, parts.length), eof.getValue().getFieldMap()); } else { return true; } } } return false; }
return new EntityObjectField(fieldName,fromMap( value, false)); // recursion
entity.setField( new EntityObjectField( fieldName,
final EntityObjectField nested2Field = new EntityObjectField( "nested2", leafEntity ); final EntityObjectField nested1Field = new EntityObjectField( "nested1", nested2 );
final EntityObjectField nested2Field = new EntityObjectField( "nested2", leafEntity ); final EntityObjectField nested1Field = new EntityObjectField( "nested1", nested2 );