Search in sources :

Example 1 with HttpMethodView

use of com.google.api.codegen.viewmodel.HttpMethodView in project toolkit by googleapis.

the class ApiCallableTransformer method generateHttpFields.

private HttpMethodView generateHttpFields(MethodContext context) {
    if (context.getProductConfig().getTransportProtocol().equals(TransportProtocol.HTTP)) {
        if (context.getMethodModel() instanceof DiscoveryMethodModel) {
            // This section is only for DiscoGapic and will be deleted once the generator stops
            // ingesting Discovery files.
            Method method = ((DiscoveryMethodModel) context.getMethodModel()).getDiscoMethod();
            HttpMethodView.Builder httpMethodView = HttpMethodView.newBuilder();
            httpMethodView.fullMethodName(method.id());
            httpMethodView.httpMethod(method.httpMethod());
            List<String> pathParams = new ArrayList<>(method.pathParams().keySet());
            List<String> queryParams = new ArrayList<>(method.queryParams().keySet());
            Collections.sort(pathParams);
            Collections.sort(queryParams);
            httpMethodView.pathParams(pathParams);
            httpMethodView.queryParams(queryParams);
            httpMethodView.pathTemplate(method.path());
            // TODO(andrealin): handle multiple resource names.
            DiscoGapicInterfaceConfig interfaceConfig = (DiscoGapicInterfaceConfig) context.getSurfaceInterfaceContext().getInterfaceConfig();
            SingleResourceNameConfig nameConfig = interfaceConfig.methodToResourceNameMap().get(context.getMethodConfig());
            httpMethodView.resourceNameTypeName(context.getNamer().publicClassName(DiscoGapicParser.getResourceNameName(nameConfig)));
            // Find the field with the resource name config.
            for (FieldConfig fieldConfig : context.getMethodConfig().getRequiredFieldConfigs()) {
                if (fieldConfig.getResourceNameConfig() != null && fieldConfig.getResourceNameConfig().equals(nameConfig)) {
                    httpMethodView.resourceNameFieldName(context.getNamer().privateFieldName(Name.anyCamel(fieldConfig.getField().getNameAsParameter())));
                }
            }
            return httpMethodView.build();
        } else if (context.getMethodModel() instanceof ProtoMethodModel) {
            com.google.api.tools.framework.model.Method method = ((ProtoMethodModel) context.getMethodModel()).getProtoMethod();
            HttpAttribute httpAttr = method.getAttribute(HttpAttribute.KEY);
            HttpMethodView.Builder httpMethodView = HttpMethodView.newBuilder();
            httpMethodView.httpMethod(httpAttr.getMethodKind().toString());
            httpMethodView.fullMethodName(httpAttr.getRestMethod().getFullName());
            SurfaceNamer namer = context.getNamer();
            httpMethodView.pathTemplate(httpAttr.getPath().stream().map(pathSegment -> normalizePathSegment(pathSegment.toString())).collect(Collectors.joining("/", "/", "")));
            httpMethodView.pathParamSelectors(populateMethodSelectors(namer, httpAttr.getPathSelectors()));
            httpMethodView.queryParamSelectors(populateMethodSelectors(namer, httpAttr.getParamSelectors()));
            httpMethodView.bodySelectors(populateMethodSelectors(namer, httpAttr.getBodySelectors()));
            return httpMethodView.build();
        }
    }
    return null;
}
Also used : ApiCallableImplType(com.google.api.codegen.viewmodel.ApiCallableImplType) FieldModel(com.google.api.codegen.config.FieldModel) RetryParamsDefinitionView(com.google.api.codegen.viewmodel.RetryParamsDefinitionView) Field(com.google.api.tools.framework.model.Field) GapicMethodContext(com.google.api.codegen.config.GapicMethodContext) ServiceMethodType(com.google.api.codegen.viewmodel.ServiceMethodType) RetryCodesDefinitionView(com.google.api.codegen.viewmodel.RetryCodesDefinitionView) DiscoGapicInterfaceConfig(com.google.api.codegen.config.DiscoGapicInterfaceConfig) HashMap(java.util.HashMap) ProtoField(com.google.api.codegen.config.ProtoField) ApiCallableView(com.google.api.codegen.viewmodel.ApiCallableView) LongRunningOperationDetailView(com.google.api.codegen.viewmodel.LongRunningOperationDetailView) ArrayList(java.util.ArrayList) InterfaceContext(com.google.api.codegen.config.InterfaceContext) ProtoMethodModel(com.google.api.codegen.config.ProtoMethodModel) DiscoGapicParser(com.google.api.codegen.discogapic.transformer.DiscoGapicParser) ImmutableList(com.google.common.collect.ImmutableList) MethodContext(com.google.api.codegen.config.MethodContext) MethodModel(com.google.api.codegen.config.MethodModel) TransportProtocol(com.google.api.codegen.config.TransportProtocol) Map(java.util.Map) SingleResourceNameConfig(com.google.api.codegen.config.SingleResourceNameConfig) ApiCallSettingsView(com.google.api.codegen.viewmodel.ApiCallSettingsView) MethodConfig(com.google.api.codegen.config.MethodConfig) HttpAttribute(com.google.api.tools.framework.aspects.http.model.HttpAttribute) DiscoveryMethodModel(com.google.api.codegen.config.DiscoveryMethodModel) HttpMethodView(com.google.api.codegen.viewmodel.HttpMethodView) HttpMethodSelectorView(com.google.api.codegen.viewmodel.HttpMethodSelectorView) Collectors(java.util.stream.Collectors) FieldSelector(com.google.api.tools.framework.model.FieldSelector) Name(com.google.api.codegen.util.Name) List(java.util.List) MethodDescriptorView(com.google.api.codegen.viewmodel.MethodDescriptorView) PageStreamingConfig(com.google.api.codegen.config.PageStreamingConfig) Method(com.google.api.codegen.discovery.Method) Collections(java.util.Collections) FieldConfig(com.google.api.codegen.config.FieldConfig) VisibilityConfig(com.google.api.codegen.config.VisibilityConfig) HttpAttribute(com.google.api.tools.framework.aspects.http.model.HttpAttribute) ProtoMethodModel(com.google.api.codegen.config.ProtoMethodModel) FieldConfig(com.google.api.codegen.config.FieldConfig) ArrayList(java.util.ArrayList) HttpMethodView(com.google.api.codegen.viewmodel.HttpMethodView) DiscoGapicInterfaceConfig(com.google.api.codegen.config.DiscoGapicInterfaceConfig) Method(com.google.api.codegen.discovery.Method) DiscoveryMethodModel(com.google.api.codegen.config.DiscoveryMethodModel) SingleResourceNameConfig(com.google.api.codegen.config.SingleResourceNameConfig)

Aggregations

DiscoGapicInterfaceConfig (com.google.api.codegen.config.DiscoGapicInterfaceConfig)1 DiscoveryMethodModel (com.google.api.codegen.config.DiscoveryMethodModel)1 FieldConfig (com.google.api.codegen.config.FieldConfig)1 FieldModel (com.google.api.codegen.config.FieldModel)1 GapicMethodContext (com.google.api.codegen.config.GapicMethodContext)1 InterfaceContext (com.google.api.codegen.config.InterfaceContext)1 MethodConfig (com.google.api.codegen.config.MethodConfig)1 MethodContext (com.google.api.codegen.config.MethodContext)1 MethodModel (com.google.api.codegen.config.MethodModel)1 PageStreamingConfig (com.google.api.codegen.config.PageStreamingConfig)1 ProtoField (com.google.api.codegen.config.ProtoField)1 ProtoMethodModel (com.google.api.codegen.config.ProtoMethodModel)1 SingleResourceNameConfig (com.google.api.codegen.config.SingleResourceNameConfig)1 TransportProtocol (com.google.api.codegen.config.TransportProtocol)1 VisibilityConfig (com.google.api.codegen.config.VisibilityConfig)1 DiscoGapicParser (com.google.api.codegen.discogapic.transformer.DiscoGapicParser)1 Method (com.google.api.codegen.discovery.Method)1 Name (com.google.api.codegen.util.Name)1 ApiCallSettingsView (com.google.api.codegen.viewmodel.ApiCallSettingsView)1 ApiCallableImplType (com.google.api.codegen.viewmodel.ApiCallableImplType)1