Skip to content
Snippets Groups Projects
Commit b6e1dd25 authored by piotr.kupczyk@id.ethz.ch's avatar piotr.kupczyk@id.ethz.ch
Browse files

BIS-757 : Write Translator to TypeScript - extension for the openbis module exported by default

parent 24b56151
Loading
...@@ -73,10 +73,18 @@ generateTypeScript { ...@@ -73,10 +73,18 @@ generateTypeScript {
"ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.search.ExternalDmsSearchCriteria", "ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.search.ExternalDmsSearchCriteria",
"ch.ethz.sis.openbis.generic.dssapi.v3.dto.common.operation.IOperationResult", "ch.ethz.sis.openbis.generic.dssapi.v3.dto.common.operation.IOperationResult",
"ch.ethz.sis.openbis.generic.dssapi.v3.dto.service.execute.AbstractExecutionOptionsWithParameters"] "ch.ethz.sis.openbis.generic.dssapi.v3.dto.service.execute.AbstractExecutionOptionsWithParameters"]
mapClasses = "asInterfaces"
outputKind = 'module' outputKind = 'module'
outputFileType = 'declarationFile' outputFileType = 'declarationFile'
customTypeNaming = ["ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.search.ExternalDmsSearchCriteria:ExternalDmsSearchCriteria", "ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search.ExternalDmsSearchCriteria:DSExternalDmsSearchCriteria"] customTypeNaming = [
extensionsWithConfiguration = [new ConfiguredExtension(className: 'ch.empa.tsprocessor.MethodExtension', configuration: ['asyncClasses': "[\"ch.ethz.sis.openbis.generic.OpenBIS\"]"])] "ch.ethz.sis.openbis.generic.OpenBIS:facade",
"ch.ethz.sis.openbis.generic.asapi.v3.dto.externaldms.search.ExternalDmsSearchCriteria:ExternalDmsSearchCriteria",
"ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search.ExternalDmsSearchCriteria:DSExternalDmsSearchCriteria"
]
extensionsWithConfiguration = [
new ConfiguredExtension(className: 'ch.empa.tsprocessor.MethodExtension', configuration: ['asyncClasses': "[\"ch.ethz.sis.openbis.generic.OpenBIS\"]"]),
new ConfiguredExtension(className: 'ch.empa.tsprocessor.OpenBISModuleExtension')
]
jackson2ModuleDiscovery = true jackson2ModuleDiscovery = true
outputFile = file('../api-openbis-javascript/src/v3/openbis.d.ts') outputFile = file('../api-openbis-javascript/src/v3/openbis.d.ts')
} }
......
package ch.empa.tsprocessor;
import java.util.ArrayList;
import java.util.List;
import cz.habarta.typescript.generator.Extension;
import cz.habarta.typescript.generator.Settings;
import cz.habarta.typescript.generator.TsType;
import cz.habarta.typescript.generator.compiler.ModelCompiler;
import cz.habarta.typescript.generator.compiler.Symbol;
import cz.habarta.typescript.generator.compiler.TsModelTransformer;
import cz.habarta.typescript.generator.emitter.EmitterExtensionFeatures;
import cz.habarta.typescript.generator.emitter.TsBeanCategory;
import cz.habarta.typescript.generator.emitter.TsBeanModel;
import cz.habarta.typescript.generator.emitter.TsModel;
import cz.habarta.typescript.generator.emitter.TsPropertyModel;
public class OpenBISModuleExtension extends Extension
{
@Override public EmitterExtensionFeatures getFeatures()
{
final EmitterExtensionFeatures features = new EmitterExtensionFeatures();
features.generatesRuntimeCode = false;
features.generatesModuleCode = true;
features.worksWithPackagesMappedToNamespaces = true;
features.generatesJaxrsApplicationClient = false;
return features;
}
@Override public List<TransformerDefinition> getTransformers()
{
return List.of(new TransformerDefinition(ModelCompiler.TransformationPhase.AfterDeclarationSorting, (TsModelTransformer) (context, model) ->
{
List<TsBeanModel> beans = model.getBeans();
List<TsPropertyModel> properties = new ArrayList<>();
for (TsBeanModel bean : beans)
{
properties.add(new TsPropertyModel(bean.getName().getSimpleName(), new TsType.ReferenceType(bean.getName()), null, true, null));
}
beans.add(new TsBeanModel(null, TsBeanCategory.Data, false, new Symbol("openbis"), null, null, null, null, properties, null, null, null));
return model.withBeans(beans);
}));
}
@Override public void emitElements(final Writer writer, final Settings settings, final boolean exportKeyword, final TsModel model)
{
writer.writeIndentedLine("export default openbis");
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment