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