• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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