1 // Copyright 2021 Google LLC 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package com.google.api.generator.gapic.composer.common; 16 17 import com.google.api.generator.engine.ast.ConcreteReference; 18 import com.google.api.generator.engine.ast.TypeNode; 19 import com.google.api.generator.gapic.composer.utils.ClassNames; 20 import com.google.api.generator.gapic.model.Transport; 21 import com.google.auto.value.AutoValue; 22 import java.util.List; 23 import javax.annotation.Nullable; 24 25 @AutoValue 26 public abstract class TransportContext { 27 classNames()28 public abstract ClassNames classNames(); 29 30 // For AbstractServiceStubClassComposer transport()31 public abstract Transport transport(); 32 transportNames()33 public abstract List<String> transportNames(); 34 35 @Nullable callSettingsClass()36 public abstract Class<?> callSettingsClass(); 37 38 @Nullable stubCallableFactoryType()39 public abstract TypeNode stubCallableFactoryType(); 40 41 @Nullable methodDescriptorClass()42 public abstract Class<?> methodDescriptorClass(); 43 transportOperationsStubTypes()44 public abstract List<TypeNode> transportOperationsStubTypes(); 45 transportOperationsStubNames()46 public abstract List<String> transportOperationsStubNames(); 47 48 // For AbstractServiceSettingsClassComposer instantiatingChannelProviderClasses()49 public abstract List<Class<?>> instantiatingChannelProviderClasses(); 50 instantiatingChannelProviderBuilderClasses()51 public abstract List<Class<?>> instantiatingChannelProviderBuilderClasses(); 52 defaultTransportProviderBuilderNames()53 public abstract List<String> defaultTransportProviderBuilderNames(); 54 transportApiClientHeaderProviderBuilderNames()55 public abstract List<String> transportApiClientHeaderProviderBuilderNames(); 56 57 // For AbstractServiceStubSettingsClassComposer transportChannelTypes()58 public abstract List<TypeNode> transportChannelTypes(); 59 transportGetterNames()60 public abstract List<String> transportGetterNames(); 61 62 // For AbstractServiceCallableFactoryClassComposer 63 @Nullable transportCallSettingsType()64 public abstract TypeNode transportCallSettingsType(); 65 66 @Nullable transportCallableFactoryType()67 public abstract TypeNode transportCallableFactoryType(); 68 operationsStubTypes()69 public abstract List<TypeNode> operationsStubTypes(); 70 71 @Nullable transportCallSettingsName()72 public abstract String transportCallSettingsName(); 73 74 // For RetrySettingsComposer operationResponseTransformerType()75 public abstract TypeNode operationResponseTransformerType(); 76 operationMetadataTransformerType()77 public abstract TypeNode operationMetadataTransformerType(); 78 operationsClientTypes()79 public abstract List<TypeNode> operationsClientTypes(); 80 operationsClientNames()81 public abstract List<String> operationsClientNames(); 82 useValuePatterns()83 public abstract boolean useValuePatterns(); 84 classToType(Class<?> clazz)85 protected static TypeNode classToType(Class<?> clazz) { 86 return TypeNode.withReference(ConcreteReference.withClazz(clazz)); 87 } 88 builder()89 public static TransportContext.Builder builder() { 90 return new AutoValue_TransportContext.Builder(); 91 } 92 93 @AutoValue.Builder 94 public abstract static class Builder { 95 setClassNames(ClassNames value)96 public abstract Builder setClassNames(ClassNames value); 97 setTransport(Transport transport)98 public abstract Builder setTransport(Transport transport); 99 setTransportNames(List<String> values)100 public abstract Builder setTransportNames(List<String> values); 101 setCallSettingsClass(Class<?> callSettingsClass)102 public abstract Builder setCallSettingsClass(Class<?> callSettingsClass); 103 setStubCallableFactoryType(TypeNode stubCallableFactoryType)104 public abstract Builder setStubCallableFactoryType(TypeNode stubCallableFactoryType); 105 setMethodDescriptorClass(Class<?> methodDescriptorClass)106 public abstract Builder setMethodDescriptorClass(Class<?> methodDescriptorClass); 107 setInstantiatingChannelProviderClasses( List<Class<?>> instantiatingChannelProviderClasses)108 public abstract Builder setInstantiatingChannelProviderClasses( 109 List<Class<?>> instantiatingChannelProviderClasses); 110 setInstantiatingChannelProviderBuilderClasses( List<Class<?>> instantiatingChannelProviderBuilderClasses)111 public abstract Builder setInstantiatingChannelProviderBuilderClasses( 112 List<Class<?>> instantiatingChannelProviderBuilderClasses); 113 setDefaultTransportProviderBuilderNames( List<String> defaultTransportProviderBuilderNames)114 public abstract Builder setDefaultTransportProviderBuilderNames( 115 List<String> defaultTransportProviderBuilderNames); 116 setTransportApiClientHeaderProviderBuilderNames( List<String> transportApiClientHeaderProviderBuilderNames)117 public abstract Builder setTransportApiClientHeaderProviderBuilderNames( 118 List<String> transportApiClientHeaderProviderBuilderNames); 119 setTransportChannelTypes(List<TypeNode> transportChannelTypes)120 public abstract Builder setTransportChannelTypes(List<TypeNode> transportChannelTypes); 121 setTransportGetterNames(List<String> transportGetterNames)122 public abstract Builder setTransportGetterNames(List<String> transportGetterNames); 123 setTransportCallSettingsType(TypeNode transportCallSettingsType)124 public abstract Builder setTransportCallSettingsType(TypeNode transportCallSettingsType); 125 setTransportCallableFactoryType(TypeNode transportCallableFactoryType)126 public abstract Builder setTransportCallableFactoryType(TypeNode transportCallableFactoryType); 127 setTransportCallSettingsName(String transportCallSettingsName)128 public abstract Builder setTransportCallSettingsName(String transportCallSettingsName); 129 setTransportOperationsStubTypes( List<TypeNode> transportOperationsStubTypes)130 public abstract Builder setTransportOperationsStubTypes( 131 List<TypeNode> transportOperationsStubTypes); 132 setTransportOperationsStubNames( List<String> transportOperationsStubNames)133 public abstract Builder setTransportOperationsStubNames( 134 List<String> transportOperationsStubNames); 135 setOperationsStubTypes(List<TypeNode> operationsStubType)136 public abstract Builder setOperationsStubTypes(List<TypeNode> operationsStubType); 137 setOperationResponseTransformerType( TypeNode operationResponseTransformerType)138 public abstract Builder setOperationResponseTransformerType( 139 TypeNode operationResponseTransformerType); 140 setOperationMetadataTransformerType( TypeNode operationMetadataTransformerType)141 public abstract Builder setOperationMetadataTransformerType( 142 TypeNode operationMetadataTransformerType); 143 setOperationsClientTypes(List<TypeNode> operationsClientTypes)144 public abstract Builder setOperationsClientTypes(List<TypeNode> operationsClientTypes); 145 setOperationsClientNames(List<String> operationsClientNames)146 public abstract Builder setOperationsClientNames(List<String> operationsClientNames); 147 setUseValuePatterns(boolean useValuePatterns)148 public abstract Builder setUseValuePatterns(boolean useValuePatterns); 149 build()150 public abstract TransportContext build(); 151 } 152 } 153