@@ -67,9 +67,7 @@ public Mono<ResourceBundle> resolveCoreBundle(ResourceBundle coreBundle, Map<Str
67
67
.collect (Collectors .toSet ()))
68
68
.expand (currentGroupSet ->
69
69
processResourceGroups (currentGroupSet , null , coreBundle , false , groupMap )
70
- .onErrorResume (e -> {
71
- return Mono .empty (); // Skip this resource group on error
72
- }))
70
+ .onErrorResume (e -> Mono .empty ()))
73
71
.then (Mono .just (coreBundle ));
74
72
}
75
73
@@ -144,26 +142,20 @@ public Mono<Set<ResourceGroup>> processResourceGroups(
144
142
return bundleLoader .fetchUnknownResources (referencesGroupedByResourceGroup , patientBundle , coreBundle , applyConsent )
145
143
.thenMany (
146
144
Flux .fromIterable (referencesGroupedByResourceGroup .entrySet ())
145
+ .filter (entry -> entry .getKey () != null && entry .getValue () != null && !entry .getValue ().isEmpty ())
147
146
.concatMap (entry ->
148
- {
149
- try {
150
- return referenceHandler .handleReferences (
151
- entry .getValue (),
152
- patientBundle ,
153
- coreBundle ,
154
- groupMap
155
- );
156
- } catch (MustHaveViolatedException e ) {
157
- return Flux .empty ();
158
- }
159
- }
147
+ Flux .fromIterable (referenceHandler .handleReferences (
148
+ entry .getValue (),
149
+ patientBundle ,
150
+ coreBundle ,
151
+ groupMap
152
+ ))
160
153
)
161
154
)
162
155
.collect (Collectors .toSet ())
163
156
.flatMap (set -> set .isEmpty () ? Mono .empty () : Mono .just (set ));
164
157
}
165
158
166
-
167
159
/**
168
160
* Extracts for every ResourceGroup the ReferenceWrappers and collects them ordered by
169
161
*
@@ -179,9 +171,9 @@ public Map<ResourceGroup, List<ReferenceWrapper>> loadReferencesByResourceGroup(
179
171
ResourceBundle coreBundle ,
180
172
Map <String , AnnotatedAttributeGroup > groupMap ) {
181
173
182
- return resourceGroups .parallelStream ()
174
+ return resourceGroups .stream ()
183
175
.map (resourceGroup -> processResourceGroup (resourceGroup , patientBundle , coreBundle , groupMap ))
184
- .filter (entry -> !entry .getValue ().isEmpty ())
176
+ .filter (entry -> entry . getKey () != null && entry . getValue () != null && !entry .getValue ().isEmpty ())
185
177
.collect (Collectors .toMap (
186
178
Map .Entry ::getKey ,
187
179
Map .Entry ::getValue ,
@@ -219,11 +211,7 @@ private Map.Entry<ResourceGroup, List<ReferenceWrapper>> processResourceGroup(
219
211
? patientBundle .bundle ().get (resourceGroup .resourceId ())
220
212
: coreBundle .get (resourceGroup .resourceId ());
221
213
222
- if (resource .isPresent ()) {
223
- return extractReferences (resourceGroup , resource .get (), groupMap , processingBundle );
224
- } else {
225
- return handleMissingResource (resourceGroup , processingBundle );
226
- }
214
+ return resource .map (value -> extractReferences (resourceGroup , value , groupMap , processingBundle )).orElseGet (() -> handleMissingResource (resourceGroup , processingBundle ));
227
215
}
228
216
229
217
/**
@@ -253,9 +241,7 @@ private Map.Entry<ResourceGroup, List<ReferenceWrapper>> extractReferences(
253
241
List <ReferenceWrapper > extracted = referenceExtractor .extract (resource , groupMap , resourceGroup .groupId ());
254
242
return Map .entry (resourceGroup , extracted );
255
243
} catch (MustHaveViolatedException e ) {
256
- synchronized (processingBundle ) {
257
- processingBundle .addResourceGroupValidity (resourceGroup , false );
258
- }
244
+ processingBundle .addResourceGroupValidity (resourceGroup , false );
259
245
return Map .entry (resourceGroup , Collections .emptyList ());
260
246
}
261
247
}
@@ -270,11 +256,8 @@ private Map.Entry<ResourceGroup, List<ReferenceWrapper>> extractReferences(
270
256
private Map .Entry <ResourceGroup , List <ReferenceWrapper >> handleMissingResource (
271
257
ResourceGroup resourceGroup ,
272
258
ResourceBundle processingBundle ) {
273
-
274
- synchronized (processingBundle ) {
275
- logger .warn ("Empty resource marked as valid for group {}" , resourceGroup );
276
- processingBundle .addResourceGroupValidity (resourceGroup , false );
277
- }
259
+ logger .warn ("Empty resource marked as valid for group {}" , resourceGroup );
260
+ processingBundle .addResourceGroupValidity (resourceGroup , false );
278
261
return Map .entry (resourceGroup , Collections .emptyList ());
279
262
}
280
263
0 commit comments