@@ -105,17 +105,56 @@ public com.google.api.services.storage.model.Bucket apply(BucketInfo bucketInfo)
105
105
106
106
private static final Logger log = Logger .getLogger (BucketInfo .class .getName ());
107
107
108
+ /**
109
+ * Public Access Prevention enum with expected values.
110
+ *
111
+ * @see <a
112
+ * href="https://cloud.google.com/storage/docs/public-access-prevention">public-access-prevention</a>
113
+ */
114
+ public enum PublicAccessPrevention {
115
+ ENFORCED ("enforced" ),
116
+ /** Default value for Public Access Prevention */
117
+ UNSPECIFIED ("unspecified" ),
118
+ /**
119
+ * If the api returns a value that isn't defined in {@link PublicAccessPrevention} this value
120
+ * will be returned.
121
+ */
122
+ UNKNOWN (null );
123
+
124
+ private final String value ;
125
+
126
+ PublicAccessPrevention (String value ) {
127
+ this .value = value ;
128
+ }
129
+
130
+ public String getValue () {
131
+ return value ;
132
+ }
133
+
134
+ public static PublicAccessPrevention parse (String value ) {
135
+ String upper = value .toUpperCase ();
136
+ try {
137
+ return valueOf (upper );
138
+ } catch (IllegalArgumentException ignore ) {
139
+ return UNKNOWN ;
140
+ }
141
+ }
142
+ }
143
+
108
144
/**
109
145
* The Bucket's IAM Configuration.
110
146
*
111
147
* @see <a href="https://cloud.google.com/storage/docs/uniform-bucket-level-access">uniform
112
148
* bucket-level access</a>
149
+ * @see <a
150
+ * href="https://cloud.google.com/storage/docs/public-access-prevention">public-access-prevention</a>
113
151
*/
114
152
public static class IamConfiguration implements Serializable {
115
153
private static final long serialVersionUID = -8671736104909424616L ;
116
154
117
- private Boolean isUniformBucketLevelAccessEnabled ;
118
- private Long uniformBucketLevelAccessLockedTime ;
155
+ private final Boolean isUniformBucketLevelAccessEnabled ;
156
+ private final Long uniformBucketLevelAccessLockedTime ;
157
+ private final PublicAccessPrevention publicAccessPrevention ;
119
158
120
159
@ Override
121
160
public boolean equals (Object o ) {
@@ -129,12 +168,16 @@ public boolean equals(Object o) {
129
168
130
169
@ Override
131
170
public int hashCode () {
132
- return Objects .hash (isUniformBucketLevelAccessEnabled , uniformBucketLevelAccessLockedTime );
171
+ return Objects .hash (
172
+ isUniformBucketLevelAccessEnabled ,
173
+ uniformBucketLevelAccessLockedTime ,
174
+ publicAccessPrevention );
133
175
}
134
176
135
177
private IamConfiguration (Builder builder ) {
136
178
this .isUniformBucketLevelAccessEnabled = builder .isUniformBucketLevelAccessEnabled ;
137
179
this .uniformBucketLevelAccessLockedTime = builder .uniformBucketLevelAccessLockedTime ;
180
+ this .publicAccessPrevention = builder .publicAccessPrevention ;
138
181
}
139
182
140
183
public static Builder newBuilder () {
@@ -145,6 +188,7 @@ public Builder toBuilder() {
145
188
Builder builder = new Builder ();
146
189
builder .isUniformBucketLevelAccessEnabled = isUniformBucketLevelAccessEnabled ;
147
190
builder .uniformBucketLevelAccessLockedTime = uniformBucketLevelAccessLockedTime ;
191
+ builder .publicAccessPrevention = publicAccessPrevention ;
148
192
return builder ;
149
193
}
150
194
@@ -168,6 +212,11 @@ public Long getUniformBucketLevelAccessLockedTime() {
168
212
return uniformBucketLevelAccessLockedTime ;
169
213
}
170
214
215
+ /** Returns the Public Access Prevention. * */
216
+ public PublicAccessPrevention getPublicAccessPrevention () {
217
+ return publicAccessPrevention ;
218
+ }
219
+
171
220
Bucket .IamConfiguration toPb () {
172
221
Bucket .IamConfiguration iamConfiguration = new Bucket .IamConfiguration ();
173
222
@@ -180,6 +229,8 @@ Bucket.IamConfiguration toPb() {
180
229
: new DateTime (uniformBucketLevelAccessLockedTime ));
181
230
182
231
iamConfiguration .setUniformBucketLevelAccess (uniformBucketLevelAccess );
232
+ iamConfiguration .setPublicAccessPrevention (
233
+ publicAccessPrevention == null ? null : publicAccessPrevention .getValue ());
183
234
184
235
return iamConfiguration ;
185
236
}
@@ -188,17 +239,25 @@ static IamConfiguration fromPb(Bucket.IamConfiguration iamConfiguration) {
188
239
Bucket .IamConfiguration .UniformBucketLevelAccess uniformBucketLevelAccess =
189
240
iamConfiguration .getUniformBucketLevelAccess ();
190
241
DateTime lockedTime = uniformBucketLevelAccess .getLockedTime ();
242
+ String publicAccessPrevention = iamConfiguration .getPublicAccessPrevention ();
243
+
244
+ PublicAccessPrevention publicAccessPreventionValue = null ;
245
+ if (publicAccessPrevention != null ) {
246
+ publicAccessPreventionValue = PublicAccessPrevention .parse (publicAccessPrevention );
247
+ }
191
248
192
249
return newBuilder ()
193
250
.setIsUniformBucketLevelAccessEnabled (uniformBucketLevelAccess .getEnabled ())
194
251
.setUniformBucketLevelAccessLockedTime (lockedTime == null ? null : lockedTime .getValue ())
252
+ .setPublicAccessPrevention (publicAccessPreventionValue )
195
253
.build ();
196
254
}
197
255
198
256
/** Builder for {@code IamConfiguration} */
199
257
public static class Builder {
200
258
private Boolean isUniformBucketLevelAccessEnabled ;
201
259
private Long uniformBucketLevelAccessLockedTime ;
260
+ private PublicAccessPrevention publicAccessPrevention ;
202
261
203
262
/** Deprecated in favor of setIsUniformBucketLevelAccessEnabled(). */
204
263
@ Deprecated
@@ -239,6 +298,18 @@ Builder setUniformBucketLevelAccessLockedTime(Long uniformBucketLevelAccessLocke
239
298
return this ;
240
299
}
241
300
301
+ /**
302
+ * Sets the bucket's Public Access Prevention configuration. Currently supported options are
303
+ * {@link PublicAccessPrevention#UNSPECIFIED} or {@link PublicAccessPrevention#ENFORCED}
304
+ *
305
+ * @see <a
306
+ * href="https://cloud.google.com/storage/docs/public-access-prevention">public-access-prevention</a>
307
+ */
308
+ public Builder setPublicAccessPrevention (PublicAccessPrevention publicAccessPrevention ) {
309
+ this .publicAccessPrevention = publicAccessPrevention ;
310
+ return this ;
311
+ }
312
+
242
313
/** Builds an {@code IamConfiguration} object */
243
314
public IamConfiguration build () {
244
315
return new IamConfiguration (this );
0 commit comments