Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -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<String, ResourceName> resourceNames) {
Expand Down Expand Up @@ -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()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,15 @@
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;
import com.google.api.generator.gapic.model.Field;
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;
Expand Down Expand Up @@ -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();
Expand Down