private void generateDoc(ClassModel model, PrintWriter writer) { ClassTypeInfo type = model.getType(); Doc doc = model.getDoc(); if (doc != null) { writer.println("/**"); Token.toHtml(doc.getTokens(), " *", this::renderLinkToHtml, "\n", writer); writer.println(" *"); writer.println(" * <p/>"); writer.print(" * NOTE: This class has been automatically generated from the {@link "); writer.print(type.getName()); writer.println(" original} non RX-ified interface using Vert.x codegen."); writer.println(" */"); } }
@Override public String filename(ClassModel model) { ClassTypeInfo type = model.getType(); return "resources/" + type.getModuleName() + "-js/" + Helper.convertCamelCaseToUnderscores(type.getRaw().getSimpleName()) + ".js"; }
private void genConstant(ClassModel model, ConstantInfo constant, PrintWriter writer) { Doc doc = constant.getDoc(); if (doc != null) { writer.println(" /**"); Token.toHtml(doc.getTokens(), " *", this::renderLinkToHtml, "\n", writer); writer.println(" */"); } writer.print(model.isConcrete() ? " public static final" : ""); writer.println(" " + constant.getType().getSimpleName() + " " + constant.getName() + " = " + genConvReturn(constant.getType(), null, model.getType().getName() + "." + constant.getName()) + ";"); }
private void genConstant(ClassModel model, ConstantInfo constant, PrintWriter writer) { Doc doc = constant.getDoc(); if (doc != null) { writer.println(" /**"); Token.toHtml(doc.getTokens(), " *", this::renderLinkToHtml, "\n", writer); writer.println(" */"); } writer.print(model.isConcrete() ? " public static final" : ""); writer.println(" " + constant.getType().getSimpleName() + " " + constant.getName() + " = " + genConvReturn(constant.getType(), null, model.getType().getName() + "." + constant.getName()) + ";"); }
@Test public void testInterfaceExtendingHandlerStringSubtype() throws Exception { ClassModel model = new GeneratorHelper().generateClass(InterfaceExtendingHandlerStringSubtype.class); TypeInfo handlerSuperType = model.getHandlerType(); assertEquals(TypeReflectionFactory.create(String.class), handlerSuperType); ApiTypeInfo apiType = (ApiTypeInfo) model.getType(); assertTrue(apiType.isHandler()); assertEquals(TypeReflectionFactory.create(String.class), apiType.getHandlerArg()); assertFalse(apiType.isReadStream()); assertFalse(apiType.isWriteStream()); assertEquals(1, model.getMethodMap().size()); assertEquals(1, model.getMethodMap().get("handle").size()); checkMethod(model.getMethodMap().get("handle").get(0), "handle", 1, "void", MethodKind.OTHER); }
@Test public void testInterfaceExtendingHandlerVertxGenSubtype() throws Exception { ClassModel model = new GeneratorHelper().generateClass(InterfaceExtendingHandlerVertxGenSubtype.class, VertxGenClass1.class); TypeInfo handlerSuperType = model.getHandlerType(); assertEquals(TypeReflectionFactory.create(VertxGenClass1.class), handlerSuperType); ApiTypeInfo apiType = (ApiTypeInfo) model.getType(); assertTrue(apiType.isHandler()); assertEquals(TypeReflectionFactory.create(VertxGenClass1.class), apiType.getHandlerArg()); assertFalse(apiType.isReadStream()); assertFalse(apiType.isWriteStream()); assertEquals(1, model.getMethodMap().size()); assertEquals(1, model.getMethodMap().get("handle").size()); checkMethod(model.getMethodMap().get("handle").get(0), "handle", 1, "void", MethodKind.OTHER); }
@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"))); }
@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"))); }
@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"))); }
@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"))); }
@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"))); }
@Test public void testReadStreamWithParameterizedTypeArg() throws Exception { ClassModel model = new GeneratorHelper().generateClass(ReadStreamWithParameterizedTypeArg.class); ApiTypeInfo apiType = (ApiTypeInfo) model.getType().getRaw(); assertTrue(apiType.isReadStream()); ParameterizedTypeInfo readStreamArg = (ParameterizedTypeInfo) apiType.getReadStreamArg(); assertEquals(TypeReflectionFactory.create(List.class), readStreamArg.getRaw()); assertEquals(1, readStreamArg.getArgs().size()); assertEquals("T", readStreamArg.getArgs().get(0).getName()); assertFalse(apiType.isWriteStream()); assertNull(apiType.getWriteStreamArg()); assertFalse(apiType.isHandler()); }
@Test public void testInterfaceSubtypingReadStream() throws Exception { ClassModel model = new GeneratorHelper().generateClass(InterfaceSubtypingReadStream.class); ApiTypeInfo apiType = (ApiTypeInfo) model.getType(); assertTrue(apiType.isReadStream()); assertEquals(TypeReflectionFactory.create(String.class), apiType.getReadStreamArg()); assertFalse(apiType.isWriteStream()); assertNull(apiType.getWriteStreamArg()); assertFalse(apiType.isHandler()); }
@Test public void testInterfaceExtendingWriteStream() throws Exception { ClassModel model = new GeneratorHelper().generateClass(InterfaceExtentingWriteStream.class); ApiTypeInfo apiType = (ApiTypeInfo) model.getType(); assertFalse(apiType.isReadStream()); assertNull(apiType.getReadStreamArg()); assertTrue(apiType.isWriteStream()); assertEquals(TypeReflectionFactory.create(String.class), apiType.getWriteStreamArg()); assertFalse(apiType.isHandler()); }
@Test public void testInterfaceExtendingReadStream() throws Exception { ClassModel model = new GeneratorHelper().generateClass(InterfaceExtentingReadStream.class); ApiTypeInfo apiType = (ApiTypeInfo) model.getType(); assertTrue(apiType.isReadStream()); assertEquals(TypeReflectionFactory.create(String.class), apiType.getReadStreamArg()); assertFalse(apiType.isWriteStream()); assertNull(apiType.getWriteStreamArg()); assertFalse(apiType.isHandler()); }
@Test public void testGenericInterfaceExtendingReadStream() throws Exception { ClassModel model = new GeneratorHelper().generateClass(GenericInterfaceExtentingReadStream.class); ApiTypeInfo apiType = (ApiTypeInfo) model.getType().getRaw(); assertTrue(apiType.isReadStream()); TypeVariableInfo readStreamArg = (TypeVariableInfo) apiType.getReadStreamArg(); assertEquals("U", readStreamArg.getName()); assertFalse(apiType.isWriteStream()); assertNull(apiType.getWriteStreamArg()); assertFalse(apiType.isHandler()); }
@Test public void testGenericInterfaceExtendingWriteStream() throws Exception { ClassModel model = new GeneratorHelper().generateClass(GenericInterfaceExtentingWriteStream.class); ApiTypeInfo apiType = (ApiTypeInfo) model.getType().getRaw(); assertFalse(apiType.isReadStream()); assertNull(apiType.getReadStreamArg()); assertTrue(apiType.isWriteStream()); TypeVariableInfo writeStreamArg = (TypeVariableInfo) apiType.getWriteStreamArg(); assertEquals("U", writeStreamArg.getName()); assertFalse(apiType.isHandler()); }
@Test public void testInterfaceExtendingReadStreamAndWriteStream() throws Exception { ClassModel model = new GeneratorHelper().generateClass(InterfaceExtentingReadStreamAndWriteStream.class); ApiTypeInfo apiType = (ApiTypeInfo) model.getType(); assertTrue(apiType.isReadStream()); assertEquals(TypeReflectionFactory.create(String.class), apiType.getReadStreamArg()); assertTrue(apiType.isWriteStream()); assertEquals(TypeReflectionFactory.create(String.class), apiType.getWriteStreamArg()); assertFalse(apiType.isHandler()); }
@Test public void testGenericInterfaceExtendingReadStreamAndWriteStream() throws Exception { ClassModel model = new GeneratorHelper().generateClass(GenericInterfaceExtentingReadStreamAndWriteStream.class); ApiTypeInfo apiType = (ApiTypeInfo) model.getType().getRaw(); assertTrue(apiType.isReadStream()); TypeVariableInfo readStreamArg = (TypeVariableInfo) apiType.getReadStreamArg(); assertEquals("U", readStreamArg.getName()); assertTrue(apiType.isWriteStream()); TypeVariableInfo writeStreamArg = (TypeVariableInfo) apiType.getWriteStreamArg(); assertEquals("U", writeStreamArg.getName()); assertFalse(apiType.isHandler()); }