Skip to content
Snippets Groups Projects

Transitively collect all attributes of a type and use these in instance generation.

Merged Bernhard Johannes Berger requested to merge 76-problem-with-type-inheritance-in-mdo into develop
1 file
+ 13
5
Compare changes
  • Side-by-side
  • Inline
@@ -6,10 +6,7 @@ import io.jenetics.util.RandomRegistry;
import lombok.NonNull;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
import java.util.stream.Stream;
@Slf4j
@@ -82,13 +79,24 @@ public record ModelBuilder(TypeDefinition root, Map<TypeDefinition, Set<TypeDefi
final Instance instance = FACTORY.createInstance();
instance.setDefinition(definition);
for(AttributeDefinition attributeDef : definition.getAttributes()) {
for(AttributeDefinition attributeDef : allAttributes(definition)) {
instance.getAttributes().add(random(attributeDef));
}
return instance;
}
private Collection<AttributeDefinition> allAttributes(final TypeDefinition definition) {
if(definition == null) {
return new ArrayList<>();
}
final Collection<AttributeDefinition> attributes = allAttributes(definition.getSuperType());
attributes.addAll(definition.getAttributes());
return attributes;
}
/**
* Creates an attribute for the given {@code definition} and initialises the
* value randomly.
Loading