diff --git a/src/main/java/com/google/api/generator/gapic/composer/ServiceStubSettingsClassComposer.java b/src/main/java/com/google/api/generator/gapic/composer/ServiceStubSettingsClassComposer.java index bfff0971ef..9076b4c219 100644 --- a/src/main/java/com/google/api/generator/gapic/composer/ServiceStubSettingsClassComposer.java +++ b/src/main/java/com/google/api/generator/gapic/composer/ServiceStubSettingsClassComposer.java @@ -1172,6 +1172,7 @@ private static List createNestedClassMethods( nestedClassMethods.add(createNestedClassUnaryMethodSettingsBuilderGetterMethod()); // TODO(miraleung): More methods. + nestedClassMethods.add(createNestedClassBuildMethod(service, types)); return nestedClassMethods; } @@ -1555,6 +1556,25 @@ private static MethodDefinition createNestedClassUnaryMethodSettingsBuilderGette .build(); } + private static MethodDefinition createNestedClassBuildMethod( + Service service, Map types) { + TypeNode outerClassType = types.get(getThisClassName(service.name())); + TypeNode builderType = types.get(NESTED_BUILDER_CLASS_NAME); + + return MethodDefinition.builder() + .setIsOverride(true) + .setScope(ScopeNode.PUBLIC) + .setReturnType(outerClassType) + .setName("build") + .setThrowsExceptions(Arrays.asList(TypeNode.withExceptionClazz(IOException.class))) + .setReturnExpr( + NewObjectExpr.builder() + .setType(outerClassType) + .setArguments(ValueExpr.withValue(ThisObjectValue.withType(builderType))) + .build()) + .build(); + } + private static Map createStaticTypes() { List concreteClazzes = Arrays.asList( diff --git a/src/test/java/com/google/api/generator/gapic/composer/ServiceStubSettingsClassComposerTest.java b/src/test/java/com/google/api/generator/gapic/composer/ServiceStubSettingsClassComposerTest.java index ed0ac3ba6a..50f978ef1f 100644 --- a/src/test/java/com/google/api/generator/gapic/composer/ServiceStubSettingsClassComposerTest.java +++ b/src/test/java/com/google/api/generator/gapic/composer/ServiceStubSettingsClassComposerTest.java @@ -517,6 +517,11 @@ public void generateServiceClasses() { + " unaryMethodSettingsBuilders() {\n" + " return unaryMethodSettingsBuilders;\n" + " }\n" + + "\n" + + " @Override\n" + + " public EchoStubSettings build() throws IOException {\n" + + " return new EchoStubSettings(this);\n" + + " }\n" + " }\n" + "}\n"; }