@@ -42,7 +42,7 @@ public final class MorphBuilder extends AbstractMetamorphDomWalker {
42
42
private final Metamorph metamorph ;
43
43
private final Deque <Collect > collectStack ;
44
44
private Data data ;
45
- private Entity entity ;
45
+ private boolean setEntityName ;
46
46
47
47
protected MorphBuilder (final Metamorph metamorph ) {
48
48
super ();
@@ -136,9 +136,9 @@ protected void enterData(final Node dataNode) {
136
136
data .setName (resolvedAttribute (dataNode , ATTRITBUTE .NAME ));
137
137
metamorph .registerNamedValueReceiver (source , data );
138
138
139
- if (entity != null ) {
140
- entity .setNameSource (data );
141
- entity = null ;
139
+ if (setEntityName ) {
140
+ (( Entity ) collectStack . peek ()) .setNameSource (data );
141
+ setEntityName = false ;
142
142
}
143
143
}
144
144
@@ -156,32 +156,32 @@ protected void exitData(final Node node) {
156
156
157
157
@ Override
158
158
protected void enterName (final Node nameNode ) {
159
- entity = ( Entity ) collectStack . peek () ;
159
+ setEntityName = true ;
160
160
}
161
161
162
162
@ Override
163
163
protected void exitName (final Node nameNode ) {
164
- entity = null ;
164
+ setEntityName = false ;
165
165
}
166
166
167
167
@ Override
168
168
protected void enterCollect (final Node node ) {
169
169
final Map <String , String > attributes = resolvedAttributeMap (node );
170
- // must be set after recursive calls to flush decendents before parent
170
+ // must be set after recursive calls to flush descendants before parent
171
171
attributes .remove (ATTRITBUTE .FLUSH_WITH .getString ());
172
172
173
173
if (!getCollectFactory ().containsKey (node .getLocalName ())) {
174
174
throw new IllegalArgumentException ("Collector " + node .getLocalName () + NOT_FOUND );
175
175
}
176
176
final Collect collect = getCollectFactory ().newInstance (node .getLocalName (), attributes , metamorph );
177
177
178
- collectStack .push (collect );
179
-
180
- if (entity != null ) {
181
- entity .setNameSource (collect );
182
- entity = null ;
178
+ if (setEntityName ) {
179
+ ((Entity ) collectStack .peek ()).setNameSource (collect );
180
+ setEntityName = false ;
183
181
}
184
- }
182
+
183
+ collectStack .push (collect );
184
+ }
185
185
186
186
@ Override
187
187
protected void exitCollect (final Node node ) {
0 commit comments