Skip to content

Commit 8e3758d

Browse files
committed
Use collect stack to access entity instead keeping a reference.
1 parent 6de45d2 commit 8e3758d

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

src/main/java/org/culturegraph/mf/morph/MorphBuilder.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public final class MorphBuilder extends AbstractMetamorphDomWalker {
4242
private final Metamorph metamorph;
4343
private final Deque<Collect> collectStack;
4444
private Data data;
45-
private Entity entity;
45+
private boolean setEntityName;
4646

4747
protected MorphBuilder(final Metamorph metamorph) {
4848
super();
@@ -136,9 +136,9 @@ protected void enterData(final Node dataNode) {
136136
data.setName(resolvedAttribute(dataNode, ATTRITBUTE.NAME));
137137
metamorph.registerNamedValueReceiver(source, data);
138138

139-
if (entity != null) {
140-
entity.setNameSource(data);
141-
entity = null;
139+
if (setEntityName) {
140+
((Entity) collectStack.peek()).setNameSource(data);
141+
setEntityName = false;
142142
}
143143
}
144144

@@ -156,32 +156,32 @@ protected void exitData(final Node node) {
156156

157157
@Override
158158
protected void enterName(final Node nameNode) {
159-
entity = (Entity) collectStack.peek();
159+
setEntityName = true;
160160
}
161161

162162
@Override
163163
protected void exitName(final Node nameNode) {
164-
entity = null;
164+
setEntityName = false;
165165
}
166166

167167
@Override
168168
protected void enterCollect(final Node node) {
169169
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
171171
attributes.remove(ATTRITBUTE.FLUSH_WITH.getString());
172172

173173
if (!getCollectFactory().containsKey(node.getLocalName())) {
174174
throw new IllegalArgumentException("Collector " + node.getLocalName() + NOT_FOUND);
175175
}
176176
final Collect collect = getCollectFactory().newInstance(node.getLocalName(), attributes, metamorph);
177177

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;
183181
}
184-
}
182+
183+
collectStack.push(collect);
184+
}
185185

186186
@Override
187187
protected void exitCollect(final Node node) {

0 commit comments

Comments
 (0)