diff --git a/src/main/java/com/google/api/generator/gapic/composer/DefaultValueComposer.java b/src/main/java/com/google/api/generator/gapic/composer/DefaultValueComposer.java index 2994fef37b..161d7d725e 100644 --- a/src/main/java/com/google/api/generator/gapic/composer/DefaultValueComposer.java +++ b/src/main/java/com/google/api/generator/gapic/composer/DefaultValueComposer.java @@ -22,6 +22,7 @@ import com.google.api.generator.engine.ast.StringObjectValue; import com.google.api.generator.engine.ast.TypeNode; import com.google.api.generator.engine.ast.ValueExpr; +import com.google.api.generator.engine.ast.Variable; import com.google.api.generator.engine.ast.VariableExpr; import com.google.api.generator.gapic.model.Field; import com.google.api.generator.gapic.model.Message; @@ -32,6 +33,7 @@ import com.google.common.base.Preconditions; import com.google.longrunning.Operation; import com.google.protobuf.Any; +import com.google.protobuf.ByteString; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -44,6 +46,8 @@ public class DefaultValueComposer { private static TypeNode OPERATION_TYPE = TypeNode.withReference(ConcreteReference.withClazz(Operation.class)); private static TypeNode ANY_TYPE = TypeNode.withReference(ConcreteReference.withClazz(Any.class)); + private static TypeNode BYTESTRING_TYPE = + TypeNode.withReference(ConcreteReference.withClazz(ByteString.class)); static Expr createDefaultValue( MethodArgument methodArg, Map resourceNames) { @@ -122,6 +126,13 @@ static Expr createDefaultValue(Field f) { PrimitiveValue.builder().setType(f.type()).setValue("true").build()); } + if (f.type().equals(BYTESTRING_TYPE)) { + return VariableExpr.builder() + .setStaticReferenceType(BYTESTRING_TYPE) + .setVariable(Variable.builder().setName("EMPTY").setType(BYTESTRING_TYPE).build()) + .build(); + } + throw new UnsupportedOperationException( String.format( "Default value for field %s with type %s not implemented yet.", f.name(), f.type())); diff --git a/src/test/java/com/google/api/generator/gapic/composer/DefaultValueComposerTest.java b/src/test/java/com/google/api/generator/gapic/composer/DefaultValueComposerTest.java index 65371700bc..43f2507dad 100644 --- a/src/test/java/com/google/api/generator/gapic/composer/DefaultValueComposerTest.java +++ b/src/test/java/com/google/api/generator/gapic/composer/DefaultValueComposerTest.java @@ -17,6 +17,7 @@ import static junit.framework.Assert.assertEquals; import static org.junit.Assert.assertThrows; +import com.google.api.generator.engine.ast.ConcreteReference; import com.google.api.generator.engine.ast.Expr; import com.google.api.generator.engine.ast.TypeNode; import com.google.api.generator.engine.writer.JavaWriterVisitor; @@ -24,6 +25,7 @@ import com.google.api.generator.gapic.model.Message; import com.google.api.generator.gapic.model.ResourceName; import com.google.api.generator.gapic.protoparser.Parser; +import com.google.protobuf.ByteString; import com.google.protobuf.Descriptors.FileDescriptor; import com.google.showcase.v1beta1.EchoOuterClass; import com.google.testgapic.v1beta1.LockerProto; @@ -129,6 +131,18 @@ public void defaultValue_booleanField() { assertEquals("true", writerVisitor.write()); } + @Test + public void defaultValue_byteStringField() { + Field field = + Field.builder() + .setName("foobar") + .setType(TypeNode.withReference(ConcreteReference.withClazz(ByteString.class))) + .build(); + Expr expr = DefaultValueComposer.createDefaultValue(field); + expr.accept(writerVisitor); + assertEquals("ByteString.EMPTY", writerVisitor.write()); + } + @Test public void defaultValue_resourceNameWithOnePattern() { FileDescriptor lockerServiceFileDescriptor = LockerProto.getDescriptor();