OriginTrackingConstructor Class — spring-boot Architecture
Architecture documentation for the OriginTrackingConstructor class in OriginTrackedYamlLoader.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
core/spring-boot/src/main/java/org/springframework/boot/env/OriginTrackedYamlLoader.java lines 92–147
private class OriginTrackingConstructor extends SafeConstructor {
OriginTrackingConstructor(LoaderOptions loadingConfig) {
super(loadingConfig);
}
@Override
public @Nullable Object getData() throws NoSuchElementException {
Object data = super.getData();
if (data instanceof CharSequence charSequence && charSequence.isEmpty()) {
return null;
}
return data;
}
@Override
protected Object constructObject(Node node) {
if (node instanceof SequenceNode sequenceNode && sequenceNode.getValue().isEmpty()) {
return constructTrackedObject(node, "");
}
if (node instanceof ScalarNode) {
if (!(node instanceof KeyScalarNode)) {
return constructTrackedObject(node, super.constructObject(node));
}
}
if (node instanceof MappingNode mappingNode) {
replaceMappingNodeKeys(mappingNode);
}
return super.constructObject(node);
}
private void replaceMappingNodeKeys(MappingNode node) {
List<NodeTuple> value = node.getValue();
List<NodeTuple> newValue = new ArrayList<>(value.size());
for (NodeTuple tuple : value) {
newValue.add(KeyScalarNode.get(tuple));
}
node.setValue(newValue);
}
private Object constructTrackedObject(Node node, Object value) {
Origin origin = getOrigin(node);
return OriginTrackedValue.of(getValue(value), origin);
}
private Object getValue(@Nullable Object value) {
return (value != null) ? value : "";
}
private Origin getOrigin(Node node) {
Mark mark = node.getStartMark();
Location location = new Location(mark.getLine(), mark.getColumn());
return new TextResourceOrigin(OriginTrackedYamlLoader.this.resource, location);
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free