Skip to content

Commit dfd8aef

Browse files
committed
Reset name to default on reset.
1 parent 8e3758d commit dfd8aef

File tree

2 files changed

+52
-2
lines changed

2 files changed

+52
-2
lines changed

src/main/java/org/culturegraph/mf/morph/collectors/Entity.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.culturegraph.mf.morph.NamedValueReceiver;
2626
import org.culturegraph.mf.morph.NamedValueSource;
2727
import org.culturegraph.mf.stream.pipe.StreamBuffer;
28+
import org.culturegraph.mf.util.StringUtil;
2829

2930

3031

@@ -43,6 +44,7 @@ public final class Entity extends AbstractCollect {
4344
private final StreamBuffer buffer = new StreamBuffer();
4445

4546
private NamedValueSource nameSource;
47+
private String currentName;
4648

4749
public Entity(final Metamorph metamorph) {
4850
super(metamorph);
@@ -66,7 +68,7 @@ protected void emit() {
6668
private void write(final StreamReceiver receiver) {
6769
if (!buffer.isEmpty()) {
6870

69-
receiver.startEntity(getName());
71+
receiver.startEntity(StringUtil.fallback(currentName, getName()));
7072
buffer.setReceiver(receiver);
7173
buffer.replay();
7274
receiver.endEntity();
@@ -79,7 +81,7 @@ private void write(final StreamReceiver receiver) {
7981
@Override
8082
protected void receive(final String name, final String value, final NamedValueSource source) {
8183
if (source == nameSource) {
82-
setName(value);
84+
currentName = value;
8385
} else if (source instanceof Entity) {
8486
final Entity child = (Entity) source;
8587
child.write(buffer);
@@ -98,6 +100,7 @@ protected boolean isComplete() {
98100
protected void clear() {
99101
sourcesLeft.addAll(sourceList);
100102
buffer.clear();
103+
currentName = null;
101104
}
102105

103106
@Override

src/test/java/org/culturegraph/mf/morph/collectors/EntityTest.xml

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,4 +371,51 @@
371371
</result>
372372
</test-case>
373373

374+
<test-case name="shouldResetNameToNameAttribute">
375+
<input type="text/x-cg+xml">
376+
<cgxml:cgxml version="1.0">
377+
<cgxml:records>
378+
<cgxml:record id="1x">
379+
<cgxml:literal name="data1" value="a" />
380+
<cgxml:literal name="data3" value="dynamicName" />
381+
</cgxml:record>
382+
<cgxml:record id="2x">
383+
384+
<cgxml:literal name="data1" value="b" />
385+
</cgxml:record>
386+
</cgxml:records>
387+
</cgxml:cgxml>
388+
</input>
389+
390+
<transformation type="text/x-metamorph+xml">
391+
<mm:metamorph version="1">
392+
<mm:rules>
393+
<mm:entity name="defaultName" flushWith="record">
394+
<mm:entity-name>
395+
<mm:data source="data3" />
396+
</mm:entity-name>
397+
<mm:data source="data1" name="l1" />
398+
</mm:entity>
399+
</mm:rules>
400+
</mm:metamorph>
401+
</transformation>
402+
403+
<result type="text/x-cg+xml">
404+
<cgxml:cgxml version="1.0">
405+
<cgxml:records>
406+
<cgxml:record id="1x">
407+
<cgxml:entity name="dynamicName">
408+
<cgxml:literal name="l1" value="a" />
409+
</cgxml:entity>
410+
</cgxml:record>
411+
<cgxml:record id="2x">
412+
<cgxml:entity name="defaultName">
413+
<cgxml:literal name="l1" value="b" />
414+
</cgxml:entity>
415+
</cgxml:record>
416+
</cgxml:records>
417+
</cgxml:cgxml>
418+
</result>
419+
</test-case>
420+
374421
</metamorph-test>

0 commit comments

Comments
 (0)