@@ -514,28 +514,28 @@ private String[] collectAllRelationshipTypes(Collection<RelationshipDescription>
514
514
515
515
for (RelationshipDescription relationshipDescription : relationshipDescriptions ) {
516
516
String relationshipType = relationshipDescription .getType ();
517
- if (relationshipTypes .contains (relationshipType )) {
518
- continue ;
519
- }
520
517
if (relationshipDescription .isDynamic ()) {
521
518
relationshipTypes .clear ();
522
519
continue ;
523
520
}
524
521
relationshipTypes .add (relationshipType );
525
- collectAllRelationshipTypes (relationshipDescription .getTarget (), relationshipTypes );
522
+ collectAllRelationshipTypes (relationshipDescription .getTarget (), relationshipTypes , new HashSet <>( relationshipDescriptions ) );
526
523
}
527
524
return relationshipTypes .toArray (new String [0 ]);
528
525
}
529
526
530
- private void collectAllRelationshipTypes (NodeDescription <?> nodeDescription , Set <String > processedRelationshipTypes ) {
527
+ private void collectAllRelationshipTypes (NodeDescription <?> nodeDescription , Set <String > relationshipTypes ,
528
+ Collection <RelationshipDescription > processedRelationshipDescriptions ) {
531
529
532
530
for (RelationshipDescription relationshipDescription : nodeDescription .getRelationships ()) {
533
531
String relationshipType = relationshipDescription .getType ();
534
- if (processedRelationshipTypes .contains (relationshipType )) {
532
+ if (processedRelationshipDescriptions .contains (relationshipDescription )) {
535
533
continue ;
536
534
}
537
- processedRelationshipTypes .add (relationshipType );
538
- collectAllRelationshipTypes (relationshipDescription .getTarget (), processedRelationshipTypes );
535
+ relationshipTypes .add (relationshipType );
536
+ processedRelationshipDescriptions .add (relationshipDescription );
537
+ collectAllRelationshipTypes (relationshipDescription .getTarget (), relationshipTypes ,
538
+ processedRelationshipDescriptions );
539
539
}
540
540
}
541
541
0 commit comments