ExportContext.java

package com.taxonomy.export.spi;

import com.taxonomy.diagram.DiagramModel;

import java.io.Serializable;
import java.util.Map;
import java.util.Objects;

/**
 * Immutable input passed to a diagram export extension.
 *
 * @param diagram projected, format-neutral diagram model
 * @param options optional renderer-specific options
 */
public record ExportContext(
        DiagramModel diagram,
        Map<String, Object> options) implements Serializable {

    public ExportContext {
        diagram = Objects.requireNonNull(diagram, "diagram must not be null");
        options = options == null ? Map.of() : Map.copyOf(options);
    }

    public static ExportContext of(DiagramModel diagram) {
        return new ExportContext(diagram, Map.of());
    }
}