28
28
import java .util .HashMap ;
29
29
import java .util .List ;
30
30
import java .util .Map ;
31
+ import java .util .Objects ;
31
32
import java .util .concurrent .CompletionStage ;
32
33
import java .util .stream .Collectors ;
33
34
import org .apache .commons .collections4 .CollectionUtils ;
35
+ import org .apache .commons .collections4 .MapUtils ;
34
36
import org .dataloader .BatchLoader ;
35
37
36
38
public class EntityFetcherBatchLoader implements BatchLoader <DataFetchingEnvironment , DataFetcherResult <Object >> {
@@ -143,15 +145,17 @@ private Map<String, Object> createRepresentation(
143
145
DataFetchingEnvironment dataFetchingEnvironment
144
146
){
145
147
Map <String , Object > dataSource = dataFetchingEnvironment .getSource ();
146
- Map <String , String > fieldToAliasMap = buildFieldToAliasMap (dataFetchingEnvironment );
148
+ Map <String , String > keyToAliasMap = buildkeyToAliasMap (dataFetchingEnvironment );
147
149
148
150
Map <String , Object > entityRepresentation = new HashMap <>();
149
151
entityRepresentation .put (Introspection .TypeNameMetaFieldDef .getName (), this .entityTypeName );
150
152
151
153
this .representationFieldTemplate
152
154
.forEach (fieldName -> {
153
- String dataSourceKey = fieldToAliasMap .get (fieldName );
154
- entityRepresentation .put (fieldName , dataSource .get (dataSourceKey ));
155
+ String keyAlias = keyToAliasMap .get (fieldName );
156
+ String dataSourceKey = keyAlias != null ? keyAlias : fieldName ;
157
+ Object value = Objects .requireNonNull (dataSource .get (dataSourceKey ), "Entity Fetch failed. Key " + dataSourceKey + " not found in source" );
158
+ entityRepresentation .put (fieldName , value );
155
159
});
156
160
157
161
return entityRepresentation ;
@@ -163,7 +167,7 @@ private Map<String, Object> createRepresentation(
163
167
* @param dataFetchingEnvironment
164
168
* @return
165
169
*/
166
- private Map <String , String > buildFieldToAliasMap (DataFetchingEnvironment dataFetchingEnvironment ) {
170
+ private Map <String , String > buildkeyToAliasMap (DataFetchingEnvironment dataFetchingEnvironment ) {
167
171
MergedField parentField = dataFetchingEnvironment .getExecutionStepInfo ().getParent ().getField ();
168
172
return parentField .getSingleField ().getSelectionSet ().getSelections ()
169
173
.stream ()
0 commit comments