DecisionReportTemplateHeaders.java
package com.taxonomy.architecture.decision;
import com.taxonomy.extension.api.report.ReportRenderResult;
import org.springframework.http.ResponseEntity;
import java.util.Objects;
/** Allow-listed HTTP representation of exact decision-report template provenance. */
public final class DecisionReportTemplateHeaders {
public static final String HEADER_TEMPLATE_ID = "X-Taxonomy-Template-Id";
public static final String HEADER_TEMPLATE_COMMIT =
"X-Taxonomy-Template-Commit";
public static final String HEADER_TEMPLATE_SHA256 =
"X-Taxonomy-Template-SHA256";
public static final String HEADER_TEMPLATE_SCHEMA_VERSION =
"X-Taxonomy-Template-Schema-Version";
private DecisionReportTemplateHeaders() {
}
/**
* Add only the four validated template fields to a response. Other renderer
* metadata can never become a response header through this boundary.
*/
public static ResponseEntity.BodyBuilder apply(
ResponseEntity.BodyBuilder response,
ReportRenderResult rendered) {
Objects.requireNonNull(response, "response");
Objects.requireNonNull(rendered, "rendered");
DecisionReportTemplateProvenance.fromArtifactMetadata(
rendered.artifactMetadata())
.ifPresent(provenance -> response
.header(HEADER_TEMPLATE_ID, provenance.templateId())
.header(HEADER_TEMPLATE_COMMIT, provenance.commitId())
.header(HEADER_TEMPLATE_SHA256, provenance.packageSha256())
.header(
HEADER_TEMPLATE_SCHEMA_VERSION,
Integer.toString(provenance.schemaVersion())));
return response;
}
}