1 /* 2 * Copyright 2022 Google LLC 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * https://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.google.cloud.securitycenter.v1; 18 19 import com.google.api.core.BetaApi; 20 import com.google.api.pathtemplate.PathTemplate; 21 import com.google.api.pathtemplate.ValidationException; 22 import com.google.api.resourcenames.ResourceName; 23 import com.google.common.base.Preconditions; 24 import com.google.common.collect.ImmutableMap; 25 import java.util.ArrayList; 26 import java.util.List; 27 import java.util.Map; 28 import java.util.Objects; 29 import javax.annotation.Generated; 30 31 // AUTO-GENERATED DOCUMENTATION AND CLASS. 32 @Generated("by gapic-generator-java") 33 public class MuteConfigName implements ResourceName { 34 private static final PathTemplate ORGANIZATION_MUTE_CONFIG = 35 PathTemplate.createWithoutUrlEncoding( 36 "organizations/{organization}/muteConfigs/{mute_config}"); 37 private static final PathTemplate FOLDER_MUTE_CONFIG = 38 PathTemplate.createWithoutUrlEncoding("folders/{folder}/muteConfigs/{mute_config}"); 39 private static final PathTemplate PROJECT_MUTE_CONFIG = 40 PathTemplate.createWithoutUrlEncoding("projects/{project}/muteConfigs/{mute_config}"); 41 private volatile Map<String, String> fieldValuesMap; 42 private PathTemplate pathTemplate; 43 private String fixedValue; 44 private final String organization; 45 private final String muteConfig; 46 private final String folder; 47 private final String project; 48 49 @Deprecated MuteConfigName()50 protected MuteConfigName() { 51 organization = null; 52 muteConfig = null; 53 folder = null; 54 project = null; 55 } 56 MuteConfigName(Builder builder)57 private MuteConfigName(Builder builder) { 58 organization = Preconditions.checkNotNull(builder.getOrganization()); 59 muteConfig = Preconditions.checkNotNull(builder.getMuteConfig()); 60 folder = null; 61 project = null; 62 pathTemplate = ORGANIZATION_MUTE_CONFIG; 63 } 64 MuteConfigName(FolderMuteConfigBuilder builder)65 private MuteConfigName(FolderMuteConfigBuilder builder) { 66 folder = Preconditions.checkNotNull(builder.getFolder()); 67 muteConfig = Preconditions.checkNotNull(builder.getMuteConfig()); 68 organization = null; 69 project = null; 70 pathTemplate = FOLDER_MUTE_CONFIG; 71 } 72 MuteConfigName(ProjectMuteConfigBuilder builder)73 private MuteConfigName(ProjectMuteConfigBuilder builder) { 74 project = Preconditions.checkNotNull(builder.getProject()); 75 muteConfig = Preconditions.checkNotNull(builder.getMuteConfig()); 76 organization = null; 77 folder = null; 78 pathTemplate = PROJECT_MUTE_CONFIG; 79 } 80 getOrganization()81 public String getOrganization() { 82 return organization; 83 } 84 getMuteConfig()85 public String getMuteConfig() { 86 return muteConfig; 87 } 88 getFolder()89 public String getFolder() { 90 return folder; 91 } 92 getProject()93 public String getProject() { 94 return project; 95 } 96 newBuilder()97 public static Builder newBuilder() { 98 return new Builder(); 99 } 100 101 @BetaApi("The per-pattern Builders are not stable yet and may be changed in the future.") newOrganizationMuteConfigBuilder()102 public static Builder newOrganizationMuteConfigBuilder() { 103 return new Builder(); 104 } 105 106 @BetaApi("The per-pattern Builders are not stable yet and may be changed in the future.") newFolderMuteConfigBuilder()107 public static FolderMuteConfigBuilder newFolderMuteConfigBuilder() { 108 return new FolderMuteConfigBuilder(); 109 } 110 111 @BetaApi("The per-pattern Builders are not stable yet and may be changed in the future.") newProjectMuteConfigBuilder()112 public static ProjectMuteConfigBuilder newProjectMuteConfigBuilder() { 113 return new ProjectMuteConfigBuilder(); 114 } 115 toBuilder()116 public Builder toBuilder() { 117 return new Builder(this); 118 } 119 of(String organization, String muteConfig)120 public static MuteConfigName of(String organization, String muteConfig) { 121 return newBuilder().setOrganization(organization).setMuteConfig(muteConfig).build(); 122 } 123 124 @BetaApi("The static create methods are not stable yet and may be changed in the future.") ofOrganizationMuteConfigName( String organization, String muteConfig)125 public static MuteConfigName ofOrganizationMuteConfigName( 126 String organization, String muteConfig) { 127 return newBuilder().setOrganization(organization).setMuteConfig(muteConfig).build(); 128 } 129 130 @BetaApi("The static create methods are not stable yet and may be changed in the future.") ofFolderMuteConfigName(String folder, String muteConfig)131 public static MuteConfigName ofFolderMuteConfigName(String folder, String muteConfig) { 132 return newFolderMuteConfigBuilder().setFolder(folder).setMuteConfig(muteConfig).build(); 133 } 134 135 @BetaApi("The static create methods are not stable yet and may be changed in the future.") ofProjectMuteConfigName(String project, String muteConfig)136 public static MuteConfigName ofProjectMuteConfigName(String project, String muteConfig) { 137 return newProjectMuteConfigBuilder().setProject(project).setMuteConfig(muteConfig).build(); 138 } 139 format(String organization, String muteConfig)140 public static String format(String organization, String muteConfig) { 141 return newBuilder().setOrganization(organization).setMuteConfig(muteConfig).build().toString(); 142 } 143 144 @BetaApi("The static format methods are not stable yet and may be changed in the future.") formatOrganizationMuteConfigName(String organization, String muteConfig)145 public static String formatOrganizationMuteConfigName(String organization, String muteConfig) { 146 return newBuilder().setOrganization(organization).setMuteConfig(muteConfig).build().toString(); 147 } 148 149 @BetaApi("The static format methods are not stable yet and may be changed in the future.") formatFolderMuteConfigName(String folder, String muteConfig)150 public static String formatFolderMuteConfigName(String folder, String muteConfig) { 151 return newFolderMuteConfigBuilder() 152 .setFolder(folder) 153 .setMuteConfig(muteConfig) 154 .build() 155 .toString(); 156 } 157 158 @BetaApi("The static format methods are not stable yet and may be changed in the future.") formatProjectMuteConfigName(String project, String muteConfig)159 public static String formatProjectMuteConfigName(String project, String muteConfig) { 160 return newProjectMuteConfigBuilder() 161 .setProject(project) 162 .setMuteConfig(muteConfig) 163 .build() 164 .toString(); 165 } 166 parse(String formattedString)167 public static MuteConfigName parse(String formattedString) { 168 if (formattedString.isEmpty()) { 169 return null; 170 } 171 if (ORGANIZATION_MUTE_CONFIG.matches(formattedString)) { 172 Map<String, String> matchMap = ORGANIZATION_MUTE_CONFIG.match(formattedString); 173 return ofOrganizationMuteConfigName( 174 matchMap.get("organization"), matchMap.get("mute_config")); 175 } else if (FOLDER_MUTE_CONFIG.matches(formattedString)) { 176 Map<String, String> matchMap = FOLDER_MUTE_CONFIG.match(formattedString); 177 return ofFolderMuteConfigName(matchMap.get("folder"), matchMap.get("mute_config")); 178 } else if (PROJECT_MUTE_CONFIG.matches(formattedString)) { 179 Map<String, String> matchMap = PROJECT_MUTE_CONFIG.match(formattedString); 180 return ofProjectMuteConfigName(matchMap.get("project"), matchMap.get("mute_config")); 181 } 182 throw new ValidationException("MuteConfigName.parse: formattedString not in valid format"); 183 } 184 parseList(List<String> formattedStrings)185 public static List<MuteConfigName> parseList(List<String> formattedStrings) { 186 List<MuteConfigName> list = new ArrayList<>(formattedStrings.size()); 187 for (String formattedString : formattedStrings) { 188 list.add(parse(formattedString)); 189 } 190 return list; 191 } 192 toStringList(List<MuteConfigName> values)193 public static List<String> toStringList(List<MuteConfigName> values) { 194 List<String> list = new ArrayList<>(values.size()); 195 for (MuteConfigName value : values) { 196 if (value == null) { 197 list.add(""); 198 } else { 199 list.add(value.toString()); 200 } 201 } 202 return list; 203 } 204 isParsableFrom(String formattedString)205 public static boolean isParsableFrom(String formattedString) { 206 return ORGANIZATION_MUTE_CONFIG.matches(formattedString) 207 || FOLDER_MUTE_CONFIG.matches(formattedString) 208 || PROJECT_MUTE_CONFIG.matches(formattedString); 209 } 210 211 @Override getFieldValuesMap()212 public Map<String, String> getFieldValuesMap() { 213 if (fieldValuesMap == null) { 214 synchronized (this) { 215 if (fieldValuesMap == null) { 216 ImmutableMap.Builder<String, String> fieldMapBuilder = ImmutableMap.builder(); 217 if (organization != null) { 218 fieldMapBuilder.put("organization", organization); 219 } 220 if (muteConfig != null) { 221 fieldMapBuilder.put("mute_config", muteConfig); 222 } 223 if (folder != null) { 224 fieldMapBuilder.put("folder", folder); 225 } 226 if (project != null) { 227 fieldMapBuilder.put("project", project); 228 } 229 fieldValuesMap = fieldMapBuilder.build(); 230 } 231 } 232 } 233 return fieldValuesMap; 234 } 235 getFieldValue(String fieldName)236 public String getFieldValue(String fieldName) { 237 return getFieldValuesMap().get(fieldName); 238 } 239 240 @Override toString()241 public String toString() { 242 return fixedValue != null ? fixedValue : pathTemplate.instantiate(getFieldValuesMap()); 243 } 244 245 @Override equals(Object o)246 public boolean equals(Object o) { 247 if (o == this) { 248 return true; 249 } 250 if (o != null || getClass() == o.getClass()) { 251 MuteConfigName that = ((MuteConfigName) o); 252 return Objects.equals(this.organization, that.organization) 253 && Objects.equals(this.muteConfig, that.muteConfig) 254 && Objects.equals(this.folder, that.folder) 255 && Objects.equals(this.project, that.project); 256 } 257 return false; 258 } 259 260 @Override hashCode()261 public int hashCode() { 262 int h = 1; 263 h *= 1000003; 264 h ^= Objects.hashCode(fixedValue); 265 h *= 1000003; 266 h ^= Objects.hashCode(organization); 267 h *= 1000003; 268 h ^= Objects.hashCode(muteConfig); 269 h *= 1000003; 270 h ^= Objects.hashCode(folder); 271 h *= 1000003; 272 h ^= Objects.hashCode(project); 273 return h; 274 } 275 276 /** Builder for organizations/{organization}/muteConfigs/{mute_config}. */ 277 public static class Builder { 278 private String organization; 279 private String muteConfig; 280 Builder()281 protected Builder() {} 282 getOrganization()283 public String getOrganization() { 284 return organization; 285 } 286 getMuteConfig()287 public String getMuteConfig() { 288 return muteConfig; 289 } 290 setOrganization(String organization)291 public Builder setOrganization(String organization) { 292 this.organization = organization; 293 return this; 294 } 295 setMuteConfig(String muteConfig)296 public Builder setMuteConfig(String muteConfig) { 297 this.muteConfig = muteConfig; 298 return this; 299 } 300 Builder(MuteConfigName muteConfigName)301 private Builder(MuteConfigName muteConfigName) { 302 Preconditions.checkArgument( 303 Objects.equals(muteConfigName.pathTemplate, ORGANIZATION_MUTE_CONFIG), 304 "toBuilder is only supported when MuteConfigName has the pattern of organizations/{organization}/muteConfigs/{mute_config}"); 305 this.organization = muteConfigName.organization; 306 this.muteConfig = muteConfigName.muteConfig; 307 } 308 build()309 public MuteConfigName build() { 310 return new MuteConfigName(this); 311 } 312 } 313 314 /** Builder for folders/{folder}/muteConfigs/{mute_config}. */ 315 @BetaApi("The per-pattern Builders are not stable yet and may be changed in the future.") 316 public static class FolderMuteConfigBuilder { 317 private String folder; 318 private String muteConfig; 319 FolderMuteConfigBuilder()320 protected FolderMuteConfigBuilder() {} 321 getFolder()322 public String getFolder() { 323 return folder; 324 } 325 getMuteConfig()326 public String getMuteConfig() { 327 return muteConfig; 328 } 329 setFolder(String folder)330 public FolderMuteConfigBuilder setFolder(String folder) { 331 this.folder = folder; 332 return this; 333 } 334 setMuteConfig(String muteConfig)335 public FolderMuteConfigBuilder setMuteConfig(String muteConfig) { 336 this.muteConfig = muteConfig; 337 return this; 338 } 339 build()340 public MuteConfigName build() { 341 return new MuteConfigName(this); 342 } 343 } 344 345 /** Builder for projects/{project}/muteConfigs/{mute_config}. */ 346 @BetaApi("The per-pattern Builders are not stable yet and may be changed in the future.") 347 public static class ProjectMuteConfigBuilder { 348 private String project; 349 private String muteConfig; 350 ProjectMuteConfigBuilder()351 protected ProjectMuteConfigBuilder() {} 352 getProject()353 public String getProject() { 354 return project; 355 } 356 getMuteConfig()357 public String getMuteConfig() { 358 return muteConfig; 359 } 360 setProject(String project)361 public ProjectMuteConfigBuilder setProject(String project) { 362 this.project = project; 363 return this; 364 } 365 setMuteConfig(String muteConfig)366 public ProjectMuteConfigBuilder setMuteConfig(String muteConfig) { 367 this.muteConfig = muteConfig; 368 return this; 369 } 370 build()371 public MuteConfigName build() { 372 return new MuteConfigName(this); 373 } 374 } 375 } 376