TemplateAdaptationResult.java

package com.cloudforge.core.local;

import com.fasterxml.jackson.databind.node.ObjectNode;

import java.util.List;
import java.util.Optional;

/** Adapted CloudFormation template plus an explicit adaptation audit trail. */
public record TemplateAdaptationResult(
        ObjectNode template,
        List<TemplateAdaptation> adaptations) {

    public boolean hasAdaptations() {
        return !adaptations.isEmpty();
    }

    public Optional<String> outputValue(String outputKey) {
        String value = template.path("Outputs").path(outputKey).path("Value").asText(null);
        if (value == null || value.isBlank()) {
            return Optional.empty();
        }
        return Optional.of(value);
    }
}