static Map<String, Object> vars(String lang) { Map<String, Object> vars = new HashMap<>(); vars.put("TRANSLATOR_HIERARCHICAL", TypeNameTranslator.hierarchical(lang)); vars.put("TRANSLATOR_COMPOSITE", TypeNameTranslator.composite(lang)); return vars; }
@Override public String render(Model model, int index, int size, Map<String, Object> session) { Map<String, Object> vars = new HashMap<>(); vars.putAll(TypeNameTranslator.vars(name)); if (incremental) { vars.put("incrementalIndex", index); vars.put("incrementalSize", size); vars.put("session", session); } return template.render(model, vars); } }
/** * Translate a given {@code qualified name} based on the module group package name and the specified * {@code lang} parameter. * * @param qualifiedName the qualified name * @param lang the language, for instance {@literal groovy} * @return the translated qualified name */ public String translateQualifiedName(String qualifiedName, String lang) { return TypeNameTranslator.hierarchical(lang).translate(this, qualifiedName); }
@Test public void testModuleScopedSubApiModel() throws Exception { ClassModel model = new GeneratorHelper().generateClass(ModuleScopedSubApi.class); assertEquals(ModuleScopedSubApi.class.getName(), model.getFqn()); assertEquals("io.vertx.test.codegen.testmodule.modulescoped", model.getModule().getPackageName()); assertEquals("simple", model.getModule().getName()); ApiTypeInfo type = (ApiTypeInfo) model.getType(); assertEquals("io.vertx.test.groovy.codegen.testmodule.modulescoped.sub.ModuleScopedSubApi", type.translateName("groovy")); assertEquals("io.vertx.test.ceylon.simple.sub.ModuleScopedSubApi", type.translateName(TypeNameTranslator.composite("ceylon"))); }
public String translatePackageName(TypeNameTranslator translator) { return module == null ? packageName : translator.translate(module, packageName); } }
/** * Translate the current type name based on the module group package name and the specified * {@code lang} parameter. This has effect only for {@link ApiTypeInfo} or * {@link ParameterizedTypeInfo} types. * * @param lang the target language, for instance {@literal groovy} * @return the translated name */ public String translateName(String lang) { return translateName(TypeNameTranslator.hierarchical(lang)); }
@Test public void testEmptyPkg() throws Exception { ClassModel model = new GeneratorHelper().generateClass(EmptyPkg.class); assertEquals(EmptyPkg.class.getName(), model.getIfaceFQCN()); assertEquals("io.vertx.test.codegen.testmodule.emptypkg", model.getModule().getPackageName()); assertEquals("simple", model.getModule().getName()); ApiTypeInfo type = (ApiTypeInfo) model.getType(); assertEquals("io.vertx.test.groovy.codegen.testmodule.emptypkg.empty.sub.EmptyPkg", type.translateName("groovy")); assertEquals("io.vertx.test.ceylon.simple.empty.sub.EmptyPkg", type.translateName(TypeNameTranslator.composite("ceylon"))); }
@Override public String translateName(TypeNameTranslator translator) { return module == null ? name : translator.translate(module, name); }
@Test public void testVertxOtherModuleScopedApiModel() throws Exception { ClassModel model = new GeneratorHelper().generateClass(VertxOtherModuleScopedApi.class); assertEquals(VertxOtherModuleScopedApi.class.getName(), model.getIfaceFQCN()); assertEquals("io.vertx.test.codegen.testmodule.vertx.other", model.getModule().getPackageName()); assertEquals("vertx-other", model.getModule().getName()); ApiTypeInfo type = (ApiTypeInfo) model.getType(); assertEquals("io.vertx.groovy.test.codegen.testmodule.vertx.other.VertxOtherModuleScopedApi", type.translateName("groovy")); assertEquals("io.vertx.ceylon.other.VertxOtherModuleScopedApi", type.translateName(TypeNameTranslator.composite("ceylon"))); }
@Override public String filename(Model model) { Map<String, Object> vars = new HashMap<>(); vars.put("helper", new Helper()); vars.put("options", env.getOptions()); vars.put("fileSeparator", File.separator); vars.put("fqn", model.getFqn()); vars.put("module", model.getModule()); vars.put("model", model); vars.putAll(model.getVars()); vars.putAll(ClassKind.vars()); vars.putAll(MethodKind.vars()); vars.putAll(Case.vars()); vars.putAll(TypeNameTranslator.vars(name)); return (String) MVEL.executeExpression(filenameExpr, vars); }
@Test public void testModuleScopedApiModel() throws Exception { ClassModel model = new GeneratorHelper().generateClass(ModuleScopedApi.class); assertEquals(ModuleScopedApi.class.getName(), model.getIfaceFQCN()); assertEquals("io.vertx.test.codegen.testmodule.modulescoped", model.getModule().getPackageName()); assertEquals("simple", model.getModule().getName()); ApiTypeInfo type = (ApiTypeInfo) model.getType(); assertEquals("io.vertx.test.groovy.codegen.testmodule.modulescoped.ModuleScopedApi", type.translateName("groovy")); assertEquals("io.vertx.test.ceylon.simple.ModuleScopedApi", type.translateName(TypeNameTranslator.composite("ceylon"))); }
List<TypeInfo> superTypes = (List<TypeInfo>)model.getVars().get("superTypes"); vars.putAll(TypeNameTranslator.vars(name)); vars.putAll(model.getVars()); vars.put("typeHelper", new TypeHelper());
@Test public void testVertxCoreModuleScopedApiModel() throws Exception { ClassModel model = new GeneratorHelper().generateClass(VertxCoreModuleScopedApi.class); assertEquals(VertxCoreModuleScopedApi.class.getName(), model.getIfaceFQCN()); assertEquals("io.vertx.test.codegen.testmodule.vertx.core", model.getModule().getPackageName()); assertEquals("vertx", model.getModule().getName()); ApiTypeInfo type = (ApiTypeInfo) model.getType(); assertEquals("io.vertx.groovy.test.codegen.testmodule.vertx.core.VertxCoreModuleScopedApi", type.translateName("groovy")); assertEquals("io.vertx.ceylon.core.VertxCoreModuleScopedApi", type.translateName(TypeNameTranslator.composite("ceylon"))); }
@Override public String render(Model model, int index, int size, Map<String, Object> session) { Map<String, Object> vars = new HashMap<>(); ClassTypeInfo type = ((ClassTypeInfo)model.getVars().get("type")); Set<TypeInfo> importedTypes = (Set<TypeInfo>)model.getVars().get("importedTypes"); Set<TypeInfo> superTypes = (Set<TypeInfo>)model.getVars().get("superTypes"); vars.putAll(TypeNameTranslator.vars(name)); vars.putAll(model.getVars()); vars.put("typeHelper", new TypeHelper()); vars.put("className", Helper.getSimpleName(type.getName())); vars.put("packageName", type.getRaw().translatePackageName("scala")); vars.put("imps", adjustedImports(type, importedTypes, superTypes)); vars.put("isAllSuperTypesAbstract",isAllSuperTypesAbstract(superTypes)); vars.putAll(ClassKind.vars()); vars.putAll(MethodKind.vars()); vars.putAll(Case.vars()); Writer writer = new StringWriter(); try { template.process(vars, writer); return writer.toString(); } catch (TemplateException e) { e.printStackTrace(); throw new RuntimeException(e); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } }