Skip to content

Commit 4bbaea9

Browse files
committed
Encapsulate DefaultStructInstance helper class
1 parent e0b9fd9 commit 4bbaea9

File tree

2 files changed

+29
-72
lines changed

2 files changed

+29
-72
lines changed

scijava-struct/src/main/java/org/scijava/struct/DefaultStructInstance.java

Lines changed: 0 additions & 71 deletions
This file was deleted.

scijava-struct/src/main/java/org/scijava/struct/Struct.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@
3030
package org.scijava.struct;
3131

3232
import java.util.Iterator;
33+
import java.util.LinkedHashMap;
3334
import java.util.List;
35+
import java.util.stream.Collectors;
3436

3537
/**
3638
* A structure consisting of typed fields called {@link Member}s.
@@ -48,6 +50,32 @@ default Iterator<Member<?>> iterator() {
4850
}
4951

5052
default <C> StructInstance<C> createInstance(final C object) {
51-
return new DefaultStructInstance<>(this, object);
53+
final LinkedHashMap<String, MemberInstance<?>> memberMap;
54+
memberMap = new LinkedHashMap<>();
55+
for (final Member<?> member : members()) {
56+
memberMap.put(member.getKey(), member.createInstance(object));
57+
}
58+
59+
return new StructInstance<>() {
60+
@Override
61+
public List<MemberInstance<?>> members() {
62+
return memberMap.values().stream().collect(Collectors.toList());
63+
}
64+
65+
@Override
66+
public Struct struct() {
67+
return Struct.this;
68+
}
69+
70+
@Override
71+
public C object() {
72+
return object;
73+
}
74+
75+
@Override
76+
public MemberInstance<?> member(final String key) {
77+
return memberMap.get(key);
78+
}
79+
};
5280
}
5381
}

0 commit comments

Comments
 (0)