diff --git a/src/main/java/com/google/api/codegen/config/FlatteningConfig.java b/src/main/java/com/google/api/codegen/config/FlatteningConfig.java index 7505f9d5b8..00b3addf10 100644 --- a/src/main/java/com/google/api/codegen/config/FlatteningConfig.java +++ b/src/main/java/com/google/api/codegen/config/FlatteningConfig.java @@ -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 as a parameter + // because that has the same type erasure as the version of the flattened method with + // List as a parameter. + return flatteningGroup + .getFlattenedFieldConfigs() + .values() + .stream() + .anyMatch( + (FieldConfig fieldConfig) -> + fieldConfig.getField().isRepeated() && fieldConfig.useResourceNameType()); + } } diff --git a/src/main/java/com/google/api/codegen/discogapic/transformer/java/JavaDiscoGapicRequestToViewTransformer.java b/src/main/java/com/google/api/codegen/discogapic/transformer/java/JavaDiscoGapicRequestToViewTransformer.java index 25722615b6..3559be24d2 100644 --- a/src/main/java/com/google/api/codegen/discogapic/transformer/java/JavaDiscoGapicRequestToViewTransformer.java +++ b/src/main/java/com/google/api/codegen/discogapic/transformer/java/JavaDiscoGapicRequestToViewTransformer.java @@ -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 as a parameter - // because that has the same type erasure as the version of the flattened method with - // List as a parameter. + if (FlatteningConfig.hasAnyRepeatedResourceNameParameter(flatteningGroup)) { flattenedMethodContext = flattenedMethodContext.withResourceNamesInSamplesOnly(); } Iterable fieldConfigs = diff --git a/src/main/java/com/google/api/codegen/transformer/InitCodeTransformer.java b/src/main/java/com/google/api/codegen/transformer/InitCodeTransformer.java index 4212c5672a..0511ffc384 100644 --- a/src/main/java/com/google/api/codegen/transformer/InitCodeTransformer.java +++ b/src/main/java/com/google/api/codegen/transformer/InitCodeTransformer.java @@ -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 varList = Lists.newArrayList(singleResourceNameConfig.getNameTemplate().vars()); return ResourceNameInitValueView.newBuilder() diff --git a/src/main/java/com/google/api/codegen/transformer/java/JavaMethodViewGenerator.java b/src/main/java/com/google/api/codegen/transformer/java/JavaMethodViewGenerator.java index df51cef5c9..eaaf4c9e73 100644 --- a/src/main/java/com/google/api/codegen/transformer/java/JavaMethodViewGenerator.java +++ b/src/main/java/com/google/api/codegen/transformer/java/JavaMethodViewGenerator.java @@ -62,15 +62,7 @@ public List 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 as a parameter - // because that has the same type erasure as the version of the flattened method with - // List as a parameter. + if (!FlatteningConfig.hasAnyRepeatedResourceNameParameter(flatteningGroup)) { apiMethods.add( clientMethodTransformer.generatePagedFlattenedMethod(flattenedMethodContext)); } @@ -115,16 +107,7 @@ public List 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 as a parameter - // because that has the same type erasure as the version of the flattened method with - // List as a parameter. + if (FlatteningConfig.hasAnyRepeatedResourceNameParameter(flatteningGroup)) { flattenedMethodContext = flattenedMethodContext.withResourceNamesInSamplesOnly(); } apiMethods.add( @@ -148,16 +131,7 @@ public List 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 as a parameter - // because that has the same type erasure as the version of the flattened method with - // List as a parameter. + if (FlatteningConfig.hasAnyRepeatedResourceNameParameter(flatteningGroup)) { flattenedMethodContext = flattenedMethodContext.withResourceNamesInSamplesOnly(); } apiMethods.add(clientMethodTransformer.generateFlattenedMethod(flattenedMethodContext)); diff --git a/src/main/java/com/google/api/codegen/transformer/java/JavaSurfaceTestTransformer.java b/src/main/java/com/google/api/codegen/transformer/java/JavaSurfaceTestTransformer.java index 49fe4468da..cfa9251bf3 100644 --- a/src/main/java/com/google/api/codegen/transformer/java/JavaSurfaceTestTransformer.java +++ b/src/main/java/com/google/api/codegen/transformer/java/JavaSurfaceTestTransformer.java @@ -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; @@ -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 as a parameter - // because that has the same type erasure as the version of the flattened method with - // List as a parameter. + if (FlatteningConfig.hasAnyRepeatedResourceNameParameter(flatteningGroup)) { methodContext = methodContext.withResourceNamesInSamplesOnly(); } @@ -317,20 +307,10 @@ private List 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 as a parameter - // because that has the same type erasure as the version of the flattened method with - // List as a parameter. + if (FlatteningConfig.hasAnyRepeatedResourceNameParameter(flatteningGroup)) { methodContext = methodContext.withResourceNamesInSamplesOnly(); flatteningGroup = methodContext.getFlatteningConfig(); } - InitCodeContext initCodeContext = initCodeTransformer.createRequestInitCodeContext( methodContext,