66import net .quickwrite .fluent4j .ast .placeable .base .FluentArgumentResult ;
77import net .quickwrite .fluent4j .ast .placeable .base .FluentPlaceable ;
88import net .quickwrite .fluent4j .ast .placeable .base .FluentSelectable ;
9+ import net .quickwrite .fluent4j .exception .RecursionDepthReachedException ;
910import net .quickwrite .fluent4j .util .StringSlice ;
1011import net .quickwrite .fluent4j .util .args .FluentArgs ;
1112import net .quickwrite .fluent4j .util .bundle .DirectFluentBundle ;
@@ -42,7 +43,7 @@ public String stringValue() {
4243 }
4344
4445 @ Override
45- public CharSequence getResult (final AccessorBundle bundle ) {
46+ public CharSequence getResult (final AccessorBundle bundle , int recursionDepth ) {
4647 final FluentMessage fluentMessage = this .getMessage (bundle .getBundle (), reference .stringValue ());
4748 if (fluentMessage == null ) {
4849 return getErrorString ();
@@ -54,11 +55,11 @@ public CharSequence getResult(final AccessorBundle bundle) {
5455 return getErrorString ();
5556 }
5657
57- return attribute .getResult (bundle );
58+ return attribute .getResult (bundle , recursionDepth - 1 );
5859 }
5960
6061 @ Override
61- public FluentElement getArgumentResult (final AccessorBundle bundle ) {
62+ public FluentElement getArgumentResult (final AccessorBundle bundle , int recursionDepth ) {
6263 final FluentMessage fluentMessage = this .getMessage (bundle .getBundle (), reference .stringValue ());
6364 if (fluentMessage == null ) {
6465 return this ;
@@ -70,12 +71,10 @@ public FluentElement getArgumentResult(final AccessorBundle bundle) {
7071 return this ;
7172 }
7273
73- if (bundle . getAccessedStorage (). alreadyAccessed ( attribute ) ) {
74- return this ;
74+ if (recursionDepth <= 0 ) {
75+ throw new RecursionDepthReachedException () ;
7576 }
7677
77- bundle .getAccessedStorage ().addElement (attribute );
78-
7978 final List <FluentElement > elementList = attribute .getElements ();
8079
8180 if (elementList .size () != 1 ) {
0 commit comments