Is your feature request related to a problem? Please describe.
IModelTransformer currently acts as both the top-level transformation coordinator and the concrete IModelExportHandler. As a result, exporter callback methods are mixed into the public transformer interface, and control flows in both directions between IModelTransformer and IModelExporter, including access to exporter implementation details. Consumers cannot easily distinguish orchestration APIs from callback plumbing.
Describe the solution you'd like
Separate the responsibilities of coordinating a transformation, traversing the source, handling exported entities, transforming their data, and importing into the target.
The resulting design should:
- Keep consumer-facing orchestration and intentional customization APIs distinct from
IModelExportHandler callbacks.
- Prevent
IModelExporter from depending on or calling a concrete IModelTransformer.
- Prevent transformation code from accessing private exporter methods.
- Give the export handler or a dedicated transformation processor ownership of callback behavior rather than merely forwarding every callback to the coordinator.
- Preserve supported exporter injection and provide a clear migration path for transformer subclasses.
Describe alternatives you've considered
A thin forwarding adapter can remove the inheritance relationship while delegating every callback back to IModelTransformer. This improves type separation, but retains the mirrored public callback API and most of the behavioral coupling, so it does not fully address the underlying concerns.
Additional context
Parent issue: #325
Draft PR #345 explores the forwarding-adapter approach and can be used to evaluate compatibility requirements, but the intended component boundaries should be agreed upon before finalizing the breaking API change.
generated with GPT-5.6 Sol
Is your feature request related to a problem? Please describe.
IModelTransformercurrently acts as both the top-level transformation coordinator and the concreteIModelExportHandler. As a result, exporter callback methods are mixed into the public transformer interface, and control flows in both directions betweenIModelTransformerandIModelExporter, including access to exporter implementation details. Consumers cannot easily distinguish orchestration APIs from callback plumbing.Describe the solution you'd like
Separate the responsibilities of coordinating a transformation, traversing the source, handling exported entities, transforming their data, and importing into the target.
The resulting design should:
IModelExportHandlercallbacks.IModelExporterfrom depending on or calling a concreteIModelTransformer.Describe alternatives you've considered
A thin forwarding adapter can remove the inheritance relationship while delegating every callback back to
IModelTransformer. This improves type separation, but retains the mirrored public callback API and most of the behavioral coupling, so it does not fully address the underlying concerns.Additional context
Parent issue: #325
Draft PR #345 explores the forwarding-adapter approach and can be used to evaluate compatibility requirements, but the intended component boundaries should be agreed upon before finalizing the breaking API change.
generated with GPT-5.6 Sol