@@ -217,6 +217,174 @@ public void issue338_shouldPreserveSameEntitiesInElseNestedSource() {
217
217
);
218
218
}
219
219
220
+ @ Test
221
+ public void issue378_shouldOutputMoreThanTwoLevelsInElseNestedSource () {
222
+ assertMorph (receiver ,
223
+ "<rules>" +
224
+ " <data source='_elseNested' />" +
225
+ "</rules>" ,
226
+ i -> {
227
+ i .startRecord ("1" );
228
+ i .startEntity ("mods" );
229
+ i .literal ("ID" , "duepublico_mods_00074526" );
230
+ i .startEntity ("name" );
231
+ i .literal ("type" , "personal" );
232
+ i .literal ("type" , "simple" );
233
+ i .startEntity ("displayForm" );
234
+ i .literal ("value" , "Armbruster, André" );
235
+ i .endEntity ();
236
+ i .startEntity ("role" );
237
+ i .startEntity ("roleTerm" );
238
+ i .literal ("authority" , "marcrelator" );
239
+ i .literal ("type" , "code" );
240
+ i .literal ("value" , "aut" );
241
+ i .endEntity ();
242
+ i .startEntity ("roleTerm" );
243
+ i .literal ("authority" , "marcrelator" );
244
+ i .literal ("type" , "text" );
245
+ i .literal ("value" , "Author" );
246
+ i .endEntity ();
247
+ i .endEntity ();
248
+ i .startEntity ("nameIdentifier" );
249
+ i .literal ("type" , "gnd" );
250
+ i .literal ("value" , "1081830107" );
251
+ i .endEntity ();
252
+ i .startEntity ("namePart" );
253
+ i .literal ("type" , "family" );
254
+ i .literal ("value" , "Armbruster" );
255
+ i .endEntity ();
256
+ i .startEntity ("namePart" );
257
+ i .literal ("type" , "given" );
258
+ i .literal ("value" , "André" );
259
+ i .endEntity ();
260
+ i .endEntity ();
261
+ i .endEntity ();
262
+ i .endRecord ();
263
+ },
264
+ (o , f ) -> {
265
+ o .get ().startRecord ("1" );
266
+ o .get ().startEntity ("mods" );
267
+ o .get ().literal ("ID" , "duepublico_mods_00074526" );
268
+ o .get ().startEntity ("name" );
269
+ o .get ().literal ("type" , "personal" );
270
+ o .get ().literal ("type" , "simple" );
271
+ o .get ().startEntity ("displayForm" );
272
+ o .get ().literal ("value" , "Armbruster, André" );
273
+ o .get ().endEntity ();
274
+ o .get ().startEntity ("role" );
275
+ o .get ().startEntity ("roleTerm" );
276
+ o .get ().literal ("authority" , "marcrelator" );
277
+ o .get ().literal ("type" , "code" );
278
+ o .get ().literal ("value" , "aut" );
279
+ o .get ().endEntity ();
280
+ o .get ().startEntity ("roleTerm" );
281
+ o .get ().literal ("authority" , "marcrelator" );
282
+ o .get ().literal ("type" , "text" );
283
+ o .get ().literal ("value" , "Author" );
284
+ f .apply (2 ).endEntity ();
285
+ o .get ().startEntity ("nameIdentifier" );
286
+ o .get ().literal ("type" , "gnd" );
287
+ o .get ().literal ("value" , "1081830107" );
288
+ o .get ().endEntity ();
289
+ o .get ().startEntity ("namePart" );
290
+ o .get ().literal ("type" , "family" );
291
+ o .get ().literal ("value" , "Armbruster" );
292
+ o .get ().endEntity ();
293
+ o .get ().startEntity ("namePart" );
294
+ o .get ().literal ("type" , "given" );
295
+ o .get ().literal ("value" , "André" );
296
+ f .apply (3 ).endEntity ();
297
+ o .get ().endRecord ();
298
+ }
299
+ );
300
+ }
301
+
302
+ @ Test
303
+ public void shouldOutputMoreThanTwoLevelsInElseNestedSourceWithModifications () {
304
+ assertMorph (receiver ,
305
+ "<rules>" +
306
+ " <entity name='name' flushWith='record'>" +
307
+ " <data source='mods.name.displayForm.value' name='displayForm' />" +
308
+ " <data source='mods.name.namePart.value' />" +
309
+ " </entity>" +
310
+ " <data source='_elseNested' />" +
311
+ "</rules>" ,
312
+ i -> {
313
+ i .startRecord ("1" );
314
+ i .startEntity ("mods" );
315
+ i .literal ("ID" , "duepublico_mods_00074526" );
316
+ i .startEntity ("name" );
317
+ i .literal ("type" , "personal" );
318
+ i .literal ("type" , "simple" );
319
+ i .startEntity ("displayForm" );
320
+ i .literal ("value" , "Armbruster, André" );
321
+ i .endEntity ();
322
+ i .startEntity ("role" );
323
+ i .startEntity ("roleTerm" );
324
+ i .literal ("authority" , "marcrelator" );
325
+ i .literal ("type" , "code" );
326
+ i .literal ("value" , "aut" );
327
+ i .endEntity ();
328
+ i .startEntity ("roleTerm" );
329
+ i .literal ("authority" , "marcrelator" );
330
+ i .literal ("type" , "text" );
331
+ i .literal ("value" , "Author" );
332
+ i .endEntity ();
333
+ i .endEntity ();
334
+ i .startEntity ("nameIdentifier" );
335
+ i .literal ("type" , "gnd" );
336
+ i .literal ("value" , "1081830107" );
337
+ i .endEntity ();
338
+ i .startEntity ("namePart" );
339
+ i .literal ("type" , "family" );
340
+ i .literal ("value" , "Armbruster" );
341
+ i .endEntity ();
342
+ i .startEntity ("namePart" );
343
+ i .literal ("type" , "given" );
344
+ i .literal ("value" , "André" );
345
+ i .endEntity ();
346
+ i .endEntity ();
347
+ i .endEntity ();
348
+ i .endRecord ();
349
+ },
350
+ (o , f ) -> {
351
+ o .get ().startRecord ("1" );
352
+ o .get ().startEntity ("mods" );
353
+ o .get ().literal ("ID" , "duepublico_mods_00074526" );
354
+ o .get ().startEntity ("name" );
355
+ o .get ().literal ("type" , "personal" );
356
+ o .get ().literal ("type" , "simple" );
357
+ o .get ().startEntity ("role" );
358
+ o .get ().startEntity ("roleTerm" );
359
+ o .get ().literal ("authority" , "marcrelator" );
360
+ o .get ().literal ("type" , "code" );
361
+ o .get ().literal ("value" , "aut" );
362
+ o .get ().endEntity ();
363
+ o .get ().startEntity ("roleTerm" );
364
+ o .get ().literal ("authority" , "marcrelator" );
365
+ o .get ().literal ("type" , "text" );
366
+ o .get ().literal ("value" , "Author" );
367
+ f .apply (2 ).endEntity ();
368
+ o .get ().startEntity ("nameIdentifier" );
369
+ o .get ().literal ("type" , "gnd" );
370
+ o .get ().literal ("value" , "1081830107" );
371
+ o .get ().endEntity ();
372
+ o .get ().startEntity ("namePart" );
373
+ o .get ().literal ("type" , "family" );
374
+ o .get ().endEntity ();
375
+ o .get ().startEntity ("namePart" );
376
+ o .get ().literal ("type" , "given" );
377
+ f .apply (3 ).endEntity ();
378
+ o .get ().startEntity ("name" );
379
+ o .get ().literal ("displayForm" , "Armbruster, André" );
380
+ o .get ().literal ("mods.name.namePart.value" , "Armbruster" );
381
+ o .get ().literal ("mods.name.namePart.value" , "André" );
382
+ o .get ().endEntity ();
383
+ o .get ().endRecord ();
384
+ }
385
+ );
386
+ }
387
+
220
388
@ Test
221
389
public void shouldHandleUnmatchedLiteralsAndEntitiesInElseNestedSource () {
222
390
assertMorph (receiver ,
0 commit comments