StructurizrExportExtension.java

package com.taxonomy.export.service;

import com.taxonomy.export.StructurizrExportService;
import com.taxonomy.export.spi.ExportContext;
import com.taxonomy.export.spi.ExportFormatDescriptor;
import com.taxonomy.export.spi.ExportFormatExtension;
import com.taxonomy.export.spi.ExportResult;
import org.springframework.stereotype.Component;

import java.nio.charset.StandardCharsets;

/** Spring adapter for Structurizr DSL output. */
@Component
public class StructurizrExportExtension implements ExportFormatExtension {

    public static final String FORMAT_ID = "structurizr";

    private static final ExportFormatDescriptor DESCRIPTOR = new ExportFormatDescriptor(
            FORMAT_ID, "Structurizr DSL", "dsl", "text/plain; charset=UTF-8", false);

    private final StructurizrExportService structurizrExportService;

    public StructurizrExportExtension(StructurizrExportService structurizrExportService) {
        this.structurizrExportService = structurizrExportService;
    }

    @Override
    public ExportFormatDescriptor descriptor() {
        return DESCRIPTOR;
    }

    @Override
    public ExportResult export(ExportContext context) {
        String dsl = structurizrExportService.export(context.diagram());
        return new ExportResult(dsl.getBytes(StandardCharsets.UTF_8));
    }
}