ExportFormatExtension.java

package com.taxonomy.export.spi;

import com.taxonomy.shared.extension.ExtensionKind;
import com.taxonomy.shared.extension.TaxonomyExtension;

/**
 * Spring-free SPI for converting a projected diagram into a concrete export format.
 * Implementations live in adapter/application modules and are discovered by the
 * application registry.
 */
public interface ExportFormatExtension extends TaxonomyExtension {

    @Override
    default String id() {
        return descriptor().id();
    }

    @Override
    default String displayName() {
        return descriptor().displayName();
    }

    @Override
    default String description() {
        return "Exports diagrams as %s".formatted(descriptor().displayName());
    }

    @Override
    default ExtensionKind kind() {
        return ExtensionKind.EXPORT_FORMAT;
    }

    ExportFormatDescriptor descriptor();

    ExportResult export(ExportContext context);
}