1 // Copyright 2020 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.utils; 16 17 import com.google.api.generator.gapic.model.Service; 18 import java.util.Arrays; 19 import java.util.List; 20 import java.util.stream.Collectors; 21 22 /** Provides Gapic class names. */ 23 public class ClassNames { 24 // Using constants since many of these class names are used often. 25 private static final String MOCK_SERVICE_CLASS_NAME_PATTERN = "Mock%s"; 26 private static final String MOCK_SERVICE_IMPL_CLASS_NAME_PATTERN = "Mock%sImpl"; 27 private static final String CLIENT_SUFFIX = "Client"; 28 private static final String SERVICE_CLIENT_CLASS_NAME_PATTERN = "%s" + CLIENT_SUFFIX; 29 private static final String SERVICE_CLIENT_TEST_CLASS_NAME_PATTERN = "%sClientTest"; 30 private static final String SERVICE_CLIENT_TRANSPORT_TEST_CLASS_NAME_PATTERN = "%sClient%sTest"; 31 private static final String SERVICE_SETTINGS_CLASS_NAME_PATTERN = "%sSettings"; 32 private static final String SERVICE_STUB_SETTINGS_CLASS_NAME_PATTERN = "%sStubSettings"; 33 private static final String SERVICE_STUB_CLASS_NAME_PATTERN = "%sStub"; 34 private static final String TRANSPORT_SERVICE_STUB_CLASS_NAME_PATTERN = "%s%sStub"; 35 private static final String TRANSPORT_SERVICE_CALLABLE_FACTORY_CLASS_NAME_PATTERN = 36 "%s%sCallableFactory"; 37 38 private final List<String> transportPrefixes; 39 ClassNames(String... transportPrefixes)40 public ClassNames(String... transportPrefixes) { 41 this.transportPrefixes = Arrays.asList(transportPrefixes); 42 } 43 getServiceClientClassName(Service service)44 public static String getServiceClientClassName(Service service) { 45 return String.format( 46 SERVICE_CLIENT_CLASS_NAME_PATTERN, 47 monolithBackwardsCompatibleName(service.overriddenName())); 48 } 49 getServiceSettingsClassName(Service service)50 public static String getServiceSettingsClassName(Service service) { 51 return String.format( 52 SERVICE_SETTINGS_CLASS_NAME_PATTERN, 53 monolithBackwardsCompatibleName(service.overriddenName())); 54 } 55 getServiceStubSettingsClassName(Service service)56 public static String getServiceStubSettingsClassName(Service service) { 57 return String.format( 58 SERVICE_STUB_SETTINGS_CLASS_NAME_PATTERN, monolithBackwardsCompatibleName(service.name())); 59 } 60 getServiceStubClassName(Service service)61 public static String getServiceStubClassName(Service service) { 62 return String.format( 63 SERVICE_STUB_CLASS_NAME_PATTERN, monolithBackwardsCompatibleName(service.name())); 64 } 65 getTransportServiceCallableFactoryClassName(Service service)66 public String getTransportServiceCallableFactoryClassName(Service service) { 67 return getTransportServiceCallableFactoryClassNames(service).get(0); 68 } 69 getTransportServiceCallableFactoryClassNames(Service service)70 public List<String> getTransportServiceCallableFactoryClassNames(Service service) { 71 return transportPrefixes.stream() 72 .map( 73 prefix -> 74 String.format( 75 TRANSPORT_SERVICE_CALLABLE_FACTORY_CLASS_NAME_PATTERN, 76 prefix, 77 monolithBackwardsCompatibleName(service.name()))) 78 .collect(Collectors.toList()); 79 } 80 getTransportServiceStubClassName(Service service)81 public String getTransportServiceStubClassName(Service service) { 82 return getTransportServiceStubClassNames(service).get(0); 83 } 84 getTransportServiceStubClassNames(Service service)85 public List<String> getTransportServiceStubClassNames(Service service) { 86 return transportPrefixes.stream() 87 .map( 88 prefix -> 89 String.format( 90 TRANSPORT_SERVICE_STUB_CLASS_NAME_PATTERN, 91 prefix, 92 monolithBackwardsCompatibleName(service.name()))) 93 .collect(Collectors.toList()); 94 } 95 getServiceClientTestClassName(Service service)96 public static String getServiceClientTestClassName(Service service) { 97 return String.format(SERVICE_CLIENT_TEST_CLASS_NAME_PATTERN, service.overriddenName()); 98 } 99 getServiceClientTestClassNames(Service service)100 public List<String> getServiceClientTestClassNames(Service service) { 101 return transportPrefixes.stream() 102 .map( 103 prefix -> 104 String.format( 105 SERVICE_CLIENT_TRANSPORT_TEST_CLASS_NAME_PATTERN, 106 service.overriddenName(), 107 prefix)) 108 .collect(Collectors.toList()); 109 } 110 getMockServiceClassName(Service service)111 public static String getMockServiceClassName(Service service) { 112 return String.format(MOCK_SERVICE_CLASS_NAME_PATTERN, service.name()); 113 } 114 getMockServiceImplClassName(Service service)115 public static String getMockServiceImplClassName(Service service) { 116 return String.format(MOCK_SERVICE_IMPL_CLASS_NAME_PATTERN, service.name()); 117 } 118 monolithBackwardsCompatibleName(String rawServiceName)119 private static String monolithBackwardsCompatibleName(String rawServiceName) { 120 return rawServiceName.startsWith("IAMCredentials") 121 ? rawServiceName.replace("IAM", "Iam") 122 : rawServiceName; 123 } 124 } 125