Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 5b9c53f

Browse files
authored
[ggj][codegen] fix: add ByteString to DefaultValueComposer (#404)
* fix: refactor requestBuilder into separate method in ServiceClientClassComposer * feat: add varargs to AnonClass and ref setter methods * feat: add HTTP annotation parsing/validation * feat: Generate RequestParamsExtractor in GrpcServiceStub * feat: add GrpcPublisherStub test to exercise HTTP subfields * fix: add ByteString to DefaultValueComposer
1 parent 83a3af9 commit 5b9c53f

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/main/java/com/google/api/generator/gapic/composer/DefaultValueComposer.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.google.api.generator.engine.ast.StringObjectValue;
2323
import com.google.api.generator.engine.ast.TypeNode;
2424
import com.google.api.generator.engine.ast.ValueExpr;
25+
import com.google.api.generator.engine.ast.Variable;
2526
import com.google.api.generator.engine.ast.VariableExpr;
2627
import com.google.api.generator.gapic.model.Field;
2728
import com.google.api.generator.gapic.model.Message;
@@ -32,6 +33,7 @@
3233
import com.google.common.base.Preconditions;
3334
import com.google.longrunning.Operation;
3435
import com.google.protobuf.Any;
36+
import com.google.protobuf.ByteString;
3537
import java.util.ArrayList;
3638
import java.util.Arrays;
3739
import java.util.HashMap;
@@ -44,6 +46,8 @@ public class DefaultValueComposer {
4446
private static TypeNode OPERATION_TYPE =
4547
TypeNode.withReference(ConcreteReference.withClazz(Operation.class));
4648
private static TypeNode ANY_TYPE = TypeNode.withReference(ConcreteReference.withClazz(Any.class));
49+
private static TypeNode BYTESTRING_TYPE =
50+
TypeNode.withReference(ConcreteReference.withClazz(ByteString.class));
4751

4852
static Expr createDefaultValue(
4953
MethodArgument methodArg, Map<String, ResourceName> resourceNames) {
@@ -122,6 +126,13 @@ static Expr createDefaultValue(Field f) {
122126
PrimitiveValue.builder().setType(f.type()).setValue("true").build());
123127
}
124128

129+
if (f.type().equals(BYTESTRING_TYPE)) {
130+
return VariableExpr.builder()
131+
.setStaticReferenceType(BYTESTRING_TYPE)
132+
.setVariable(Variable.builder().setName("EMPTY").setType(BYTESTRING_TYPE).build())
133+
.build();
134+
}
135+
125136
throw new UnsupportedOperationException(
126137
String.format(
127138
"Default value for field %s with type %s not implemented yet.", f.name(), f.type()));

src/test/java/com/google/api/generator/gapic/composer/DefaultValueComposerTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@
1717
import static junit.framework.Assert.assertEquals;
1818
import static org.junit.Assert.assertThrows;
1919

20+
import com.google.api.generator.engine.ast.ConcreteReference;
2021
import com.google.api.generator.engine.ast.Expr;
2122
import com.google.api.generator.engine.ast.TypeNode;
2223
import com.google.api.generator.engine.writer.JavaWriterVisitor;
2324
import com.google.api.generator.gapic.model.Field;
2425
import com.google.api.generator.gapic.model.Message;
2526
import com.google.api.generator.gapic.model.ResourceName;
2627
import com.google.api.generator.gapic.protoparser.Parser;
28+
import com.google.protobuf.ByteString;
2729
import com.google.protobuf.Descriptors.FileDescriptor;
2830
import com.google.showcase.v1beta1.EchoOuterClass;
2931
import com.google.testgapic.v1beta1.LockerProto;
@@ -129,6 +131,18 @@ public void defaultValue_booleanField() {
129131
assertEquals("true", writerVisitor.write());
130132
}
131133

134+
@Test
135+
public void defaultValue_byteStringField() {
136+
Field field =
137+
Field.builder()
138+
.setName("foobar")
139+
.setType(TypeNode.withReference(ConcreteReference.withClazz(ByteString.class)))
140+
.build();
141+
Expr expr = DefaultValueComposer.createDefaultValue(field);
142+
expr.accept(writerVisitor);
143+
assertEquals("ByteString.EMPTY", writerVisitor.write());
144+
}
145+
132146
@Test
133147
public void defaultValue_resourceNameWithOnePattern() {
134148
FileDescriptor lockerServiceFileDescriptor = LockerProto.getDescriptor();

0 commit comments

Comments
 (0)