Skip to content
This repository has been archived by the owner on Jun 28, 2022. It is now read-only.

Commit

Permalink
move flatteningconfig check to fLatteningconfig
Browse files Browse the repository at this point in the history
  • Loading branch information
andreamlin committed Jul 3, 2018
1 parent 5ca2320 commit 5983086
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 67 deletions.
13 changes: 13 additions & 0 deletions src/main/java/com/google/api/codegen/config/FlatteningConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -129,4 +129,17 @@ public FlatteningConfig withResourceNamesInSamplesOnly() {
Map.Entry::getKey, e -> e.getValue().withResourceNameInSampleOnly()));
return new AutoValue_FlatteningConfig(newFlattenedFieldConfigs, getFlatteningName());
}

public static boolean hasAnyRepeatedResourceNameParameter(FlatteningConfig flatteningGroup) {
// Used in Java to prevent generating a flattened method with List<ResourceName> as a parameter
// because that has the same type erasure as the version of the flattened method with
// List<String> as a parameter.
return flatteningGroup
.getFlattenedFieldConfigs()
.values()
.stream()
.anyMatch(
(FieldConfig fieldConfig) ->
fieldConfig.getField().isRepeated() && fieldConfig.useResourceNameType());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -158,16 +158,7 @@ private RequestObjectParamView getRequestObjectParams(
for (FlatteningConfig flatteningGroup : methodConfig.getFlatteningConfigs()) {
MethodContext flattenedMethodContext =
context.asFlattenedMethodContext(method, flatteningGroup);
if (flatteningGroup
.getFlattenedFieldConfigs()
.values()
.stream()
.anyMatch(
(FieldConfig fieldConfig) ->
fieldConfig.getField().isRepeated() && fieldConfig.useResourceNameType())) {
// Don't generate a flattened method with List<ResourceName> as a parameter
// because that has the same type erasure as the version of the flattened method with
// List<String> as a parameter.
if (FlatteningConfig.hasAnyRepeatedResourceNameParameter(flatteningGroup)) {
flattenedMethodContext = flattenedMethodContext.withResourceNamesInSamplesOnly();
}
Iterable<FieldConfig> fieldConfigs =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -566,12 +566,8 @@ private ResourceNameInitValueView.Builder createResourceNameInitValueView(
MethodContext context, FieldConfig fieldConfig, InitCodeNode item) {
String resourceName =
context.getNamer().getAndSaveElementResourceTypeName(context.getTypeTable(), fieldConfig);
SingleResourceNameConfig singleResourceNameConfig;
try {
singleResourceNameConfig = (SingleResourceNameConfig) fieldConfig.getResourceNameConfig();
} catch (Exception e) {
return null;
}
SingleResourceNameConfig singleResourceNameConfig =
(SingleResourceNameConfig) fieldConfig.getResourceNameConfig();
List<String> varList = Lists.newArrayList(singleResourceNameConfig.getNameTemplate().vars());

return ResourceNameInitValueView.newBuilder()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,15 +62,7 @@ public List<StaticLangApiMethodView> generateApiMethods(InterfaceContext context
for (FlatteningConfig flatteningGroup : methodConfig.getFlatteningConfigs()) {
MethodContext flattenedMethodContext =
context.asFlattenedMethodContext(method, flatteningGroup);
if (!hasAnyResourceNameParameter(flatteningGroup)
|| !flatteningGroup
.getFlattenedFieldConfigs()
.values()
.stream()
.anyMatch((FieldConfig fieldConfig) -> fieldConfig.getField().isRepeated())) {
// Don't generate a flattened method with List<ResourceName> as a parameter
// because that has the same type erasure as the version of the flattened method with
// List<String> as a parameter.
if (!FlatteningConfig.hasAnyRepeatedResourceNameParameter(flatteningGroup)) {
apiMethods.add(
clientMethodTransformer.generatePagedFlattenedMethod(flattenedMethodContext));
}
Expand Down Expand Up @@ -115,16 +107,7 @@ public List<StaticLangApiMethodView> generateApiMethods(InterfaceContext context
for (FlatteningConfig flatteningGroup : methodConfig.getFlatteningConfigs()) {
MethodContext flattenedMethodContext =
context.asFlattenedMethodContext(method, flatteningGroup);
if (flatteningGroup
.getFlattenedFieldConfigs()
.values()
.stream()
.anyMatch(
(FieldConfig fieldConfig) ->
fieldConfig.getField().isRepeated() && fieldConfig.useResourceNameType())) {
// Don't generate a flattened method with List<ResourceName> as a parameter
// because that has the same type erasure as the version of the flattened method with
// List<String> as a parameter.
if (FlatteningConfig.hasAnyRepeatedResourceNameParameter(flatteningGroup)) {
flattenedMethodContext = flattenedMethodContext.withResourceNamesInSamplesOnly();
}
apiMethods.add(
Expand All @@ -148,16 +131,7 @@ public List<StaticLangApiMethodView> generateApiMethods(InterfaceContext context
for (FlatteningConfig flatteningGroup : methodConfig.getFlatteningConfigs()) {
MethodContext flattenedMethodContext =
context.asFlattenedMethodContext(method, flatteningGroup);
if (flatteningGroup
.getFlattenedFieldConfigs()
.values()
.stream()
.anyMatch(
(FieldConfig fieldConfig) ->
fieldConfig.getField().isRepeated() && fieldConfig.useResourceNameType())) {
// Don't generate a flattened method with List<ResourceName> as a parameter
// because that has the same type erasure as the version of the flattened method with
// List<String> as a parameter.
if (FlatteningConfig.hasAnyRepeatedResourceNameParameter(flatteningGroup)) {
flattenedMethodContext = flattenedMethodContext.withResourceNamesInSamplesOnly();
}
apiMethods.add(clientMethodTransformer.generateFlattenedMethod(flattenedMethodContext));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
package com.google.api.codegen.transformer.java;

import com.google.api.codegen.config.ApiModel;
import com.google.api.codegen.config.FieldConfig;
import com.google.api.codegen.config.FlatteningConfig;
import com.google.api.codegen.config.GapicProductConfig;
import com.google.api.codegen.config.GrpcStreamingConfig.GrpcStreamingType;
Expand Down Expand Up @@ -175,16 +174,7 @@ SmokeTestClassView.Builder createSmokeTestClassViewBuilder(InterfaceContext cont
testCaseTransformer.getSmokeTestFlatteningGroup(
context.getMethodConfig(method), context.getInterfaceConfig().getSmokeTestConfig());
MethodContext methodContext = context.asFlattenedMethodContext(method, flatteningGroup);
if (flatteningGroup
.getFlattenedFieldConfigs()
.values()
.stream()
.anyMatch(
(FieldConfig fieldConfig) ->
fieldConfig.getField().isRepeated() && fieldConfig.useResourceNameType())) {
// Don't generate a flattened method with List<ResourceName> as a parameter
// because that has the same type erasure as the version of the flattened method with
// List<String> as a parameter.
if (FlatteningConfig.hasAnyRepeatedResourceNameParameter(flatteningGroup)) {
methodContext = methodContext.withResourceNamesInSamplesOnly();
}

Expand Down Expand Up @@ -317,20 +307,10 @@ private List<TestCaseView> createTestCaseViews(InterfaceContext context) {
}
for (FlatteningConfig flatteningGroup : methodConfig.getFlatteningConfigs()) {
MethodContext methodContext = context.asFlattenedMethodContext(method, flatteningGroup);
if (flatteningGroup
.getFlattenedFieldConfigs()
.values()
.stream()
.anyMatch(
(FieldConfig fieldConfig) ->
fieldConfig.getField().isRepeated() && fieldConfig.useResourceNameType())) {
// Don't generate a flattened method with List<ResourceName> as a parameter
// because that has the same type erasure as the version of the flattened method with
// List<String> as a parameter.
if (FlatteningConfig.hasAnyRepeatedResourceNameParameter(flatteningGroup)) {
methodContext = methodContext.withResourceNamesInSamplesOnly();
flatteningGroup = methodContext.getFlatteningConfig();
}

InitCodeContext initCodeContext =
initCodeTransformer.createRequestInitCodeContext(
methodContext,
Expand Down

0 comments on commit 5983086

Please sign in to comment.