/// <summary> /// Generates C# code for service client. /// </summary> /// <param name="serviceClient"></param> /// <returns></returns> public override async Task Generate(ServiceClient serviceClient) { var serviceClientTemplateModel = new AzureServiceClientTemplateModel(serviceClient); // Service client var serviceClientTemplate = new AzureServiceClientTemplate { Model = serviceClientTemplateModel, }; await Write(serviceClientTemplate, serviceClient.Name.ToPascalCase() + "Impl.java"); var serviceClientInterfaceTemplate = new AzureServiceClientInterfaceTemplate { Model = serviceClientTemplateModel, }; await Write(serviceClientInterfaceTemplate, serviceClient.Name.ToPascalCase() + ".java"); //Models foreach (var modelType in serviceClient.ModelTypes.Concat(serviceClient.HeaderTypes)) { if (modelType.Extensions.ContainsKey(AzureExtensions.ExternalExtension) && (bool)modelType.Extensions[AzureExtensions.ExternalExtension]) { continue; } var modelTemplate = new ModelTemplate { Model = new AzureModelTemplateModel(modelType, serviceClient) }; await Write(modelTemplate, Path.Combine("models", modelType.Name.ToPascalCase() + ".java")); } //MethodGroups if (serviceClientTemplateModel.MethodGroupModels.Any()) { foreach (var methodGroupModel in serviceClientTemplateModel.MethodGroupModels) { var methodGroupTemplate = new AzureMethodGroupTemplate { Model = (AzureMethodGroupTemplateModel)methodGroupModel }; await Write(methodGroupTemplate, methodGroupModel.MethodGroupType.ToPascalCase() + "Impl.java"); var methodGroupInterfaceTemplate = new AzureMethodGroupInterfaceTemplate { Model = (AzureMethodGroupTemplateModel)methodGroupModel }; await Write(methodGroupInterfaceTemplate, methodGroupModel.MethodGroupType.ToPascalCase() + ".java"); } } //Enums foreach (var enumType in serviceClient.EnumTypes) { var enumTemplate = new EnumTemplate { Model = new EnumTemplateModel(enumType), }; await Write(enumTemplate, Path.Combine("models", enumTemplate.Model.Name.ToPascalCase() + ".java")); } // Page class foreach (var pageClass in pageClasses) { var pageTemplate = new PageTemplate { Model = new PageTemplateModel(pageClass.Value, pageClass.Key.Key, pageClass.Key.Value), }; await Write(pageTemplate, Path.Combine("models", pageTemplate.Model.TypeDefinitionName + ".java")); } // Exceptions foreach (var exceptionType in serviceClient.ErrorTypes) { if (exceptionType.Name == "CloudError") { continue; } var exceptionTemplate = new ExceptionTemplate { Model = new ModelTemplateModel(exceptionType, serviceClient), }; await Write(exceptionTemplate, Path.Combine("models", exceptionTemplate.Model.ExceptionTypeDefinitionName + ".java")); } // package-info.java await Write(new PackageInfoTemplate { Model = new PackageInfoTemplateModel(serviceClient, serviceClient.Name) }, _packageInfoFileName); await Write(new PackageInfoTemplate { Model = new PackageInfoTemplateModel(serviceClient, serviceClient.Name, true) }, Path.Combine("models", _packageInfoFileName)); }