use of cz.habarta.typescript.generator.compiler.SymbolTable in project typescript-generator by vojtechhabarta.
the class NamingTest method testTypeScriptKeywords.
@Test
public void testTypeScriptKeywords() {
final Settings settings = TestUtils.settings();
settings.mapPackagesToNamespaces = true;
final SymbolTable symbolTable = new SymbolTable(settings);
final String name = symbolTable.getMappedFullName(KeywordInPackage.class);
Assert.assertEquals("cz.habarta.typescript.generator._yield.KeywordInPackage", name);
}
use of cz.habarta.typescript.generator.compiler.SymbolTable in project typescript-generator by vojtechhabarta.
the class NamingTest method testCombinations.
@Test
public void testCombinations() {
final Settings settings = TestUtils.settings();
settings.customTypeNamingFunction = "function(name, simpleName) { if (name.indexOf('cz.') === 0) return 'Func' + simpleName; }";
settings.addTypeNamePrefix = "Conf";
settings.mapPackagesToNamespaces = true;
final SymbolTable symbolTable = new SymbolTable(settings);
Assert.assertEquals("FuncA", symbolTable.getMappedFullName(A.class));
Assert.assertEquals("java.lang.ConfObject", symbolTable.getMappedFullName(Object.class));
}
use of cz.habarta.typescript.generator.compiler.SymbolTable in project openremote by openremote.
the class JsonSerializeExtension method getTransformers.
@Override
public List<cz.habarta.typescript.generator.Extension.TransformerDefinition> getTransformers() {
return Arrays.asList(new cz.habarta.typescript.generator.Extension.TransformerDefinition(ModelCompiler.TransformationPhase.BeforeTsModel, new ModelTransformer() {
@Override
public TsModel transformModel(SymbolTable symbolTable, TsModel model) {
return model;
}
@Override
public Model transformModel(SymbolTable symbolTable, Model model) {
// Look for @JsonSerialize annotation and modify the property type accordingly
List<BeanModel> beans = model.getBeans();
beans.replaceAll(bean -> {
AtomicBoolean modified = new AtomicBoolean(false);
List<PropertyModel> properties = bean.getProperties().stream().map(p -> {
Member member = p.getOriginalMember();
JsonSerialize jsonSerialize = null;
if (member instanceof Field) {
Field field = (Field) member;
jsonSerialize = field.getAnnotation(JsonSerialize.class);
} else if (member instanceof Method) {
Method method = (Method) member;
jsonSerialize = method.getAnnotation(JsonSerialize.class);
}
if (jsonSerialize != null) {
// TODO: Add support for other options
if (jsonSerialize.as() != Void.class) {
modified.set(true);
return new PropertyModel(p.getName(), jsonSerialize.as(), p.isOptional(), p.getAccess(), p.getOriginalMember(), p.getPullProperties(), p.getContext(), p.getComments());
}
if (jsonSerialize.converter() != Converter.None.class) {
// Type info is not accessible with reflection so instantiate the converter
Method convertMethod = Arrays.stream(jsonSerialize.converter().getMethods()).filter(m -> m.getName().equals("convert")).findFirst().orElse(null);
if (convertMethod != null) {
modified.set(true);
return new PropertyModel(p.getName(), convertMethod.getGenericReturnType(), p.isOptional(), p.getAccess(), p.getOriginalMember(), p.getPullProperties(), p.getContext(), p.getComments());
}
}
}
return p;
}).collect(Collectors.toList());
if (modified.get()) {
return new BeanModel(bean.getOrigin(), bean.getParent(), bean.getTaggedUnionClasses(), bean.getDiscriminantProperty(), bean.getDiscriminantLiteral(), bean.getInterfaces(), properties, bean.getComments());
}
return bean;
});
return model;
}
}));
}
use of cz.habarta.typescript.generator.compiler.SymbolTable in project typescript-generator by vojtechhabarta.
the class NamingTest method testTypeNamingFunctionReturnsUndefined.
@Test
public void testTypeNamingFunctionReturnsUndefined() {
final Settings settings = TestUtils.settings();
settings.customTypeNamingFunction = "function() {}";
final SymbolTable symbolTable = new SymbolTable(settings);
final String name = symbolTable.getMappedFullName(A.class);
Assert.assertEquals("A", name);
}
use of cz.habarta.typescript.generator.compiler.SymbolTable in project typescript-generator by vojtechhabarta.
the class NamingTest method testTypeNamingFunction.
@Test
public void testTypeNamingFunction() {
final Settings settings = TestUtils.settings();
settings.customTypeNamingFunction = "function(name, simpleName) { if (name.indexOf('cz.') === 0) return 'Test' + simpleName; }";
final SymbolTable symbolTable = new SymbolTable(settings);
final String name = symbolTable.getMappedFullName(A.class);
Assert.assertEquals("TestA", name);
}
Aggregations