Open SomMeri opened 1 year ago
Create an extension so that typescript generator ignores bridge methods:
class WorkaroundExtension extends Extension {
public List<TransformerDefinition> getTransformers() {
return Arrays.asList(new TransformerDefinition(ModelCompiler.TransformationPhase.BeforeTsModel, new Transformer()));
}
@Override
public EmitterExtensionFeatures getFeatures() {
return new EmitterExtensionFeatures();
}
}
class Transformer implements ModelTransformer {
public Model transformModel(SymbolTable symbolTable, Model model) {
List<RestApplicationModel> newRestApplications = model.getRestApplications().stream().map(restApplication ->
new RestApplicationModel(
restApplication.getType(),
restApplication.getApplicationPath(),
restApplication.getApplicationName(),
restApplication.getMethods().stream().filter(it -> !it.getOriginalMethod().isBridge()).collect(Collectors.toList()))
).collect(Collectors.toList());
return new Model(model.getBeans(), model.getEnums(), newRestApplications);
}
}
And configure it:
public static void main(String[] args) {
Settings settings = new Settings();
settings.outputKind = TypeScriptOutputKind.module;
settings.outputFileType = TypeScriptFileType.implementationFile;
settings.jsonLibrary = JsonLibrary.jackson2;
settings.generateSpringApplicationClient = true;
settings.generateSpringApplicationInterface = true;
settings.extensions.add(new WorkaroundExtension()); //<-- here
TypeScriptGenerator generator = new TypeScriptGenerator(settings);
String result = generator.generateTypeScript(
Input.from(ConcreteController.class)
);
System.out.println(result);
}
I have a controller that inherits form a generic interface:
The controller itself is using a concrete implemenations of the interface:
This results in two different client methods generated by typescript generator:
However, in java, the controller is able to deal only with
MyDto
instances. The controller is NOT accepting an arbitraryMyInterface
instance. ThedoSomething
method is available only once - with theMyDto
parameter.How to reproduce
Main class:
Actual Result
Expected Result