From 02dc3b5e5377d8848c889647e72102cd9acc646d Mon Sep 17 00:00:00 2001 From: Dmitry <58846611+dmitry-fa@users.noreply.github.com> Date: Tue, 14 Jul 2020 23:47:40 +0300 Subject: [PATCH] fix: PostPolicyV4.PostFieldsV4.Builder.addCustomMetadataField() allows to add prefixed an not prefixed custom fields (#398) * changes to PostPolicyV4 * PostPolicyV4.addCustomMetadataField() allows to add prefixed an not prefixed custom fields * deprecate incorrectly named method * fix format * addCustomMetadataField -> setCustomMetadataField --- .../google/cloud/storage/PostPolicyV4.java | 38 +++++++++++++------ 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/PostPolicyV4.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/PostPolicyV4.java index df2936dc9..cc9b413a2 100644 --- a/google-cloud-storage/src/main/java/com/google/cloud/storage/PostPolicyV4.java +++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/PostPolicyV4.java @@ -31,8 +31,8 @@ * @see POST Object */ public final class PostPolicyV4 { - private String url; - private Map fields; + private final String url; + private final Map fields; private PostPolicyV4(String url, Map fields) { this.url = url; @@ -58,7 +58,7 @@ public Map getFields() { * Object Form fields */ public static final class PostFieldsV4 { - private Map fieldsMap; + private final Map fieldsMap; private PostFieldsV4(Builder builder) { this.fieldsMap = builder.fieldsMap; @@ -81,10 +81,11 @@ public Map getFieldsMap() { } public static class Builder { - private Map fieldsMap; + private static final String CUSTOM_FIELD_PREFIX = "x-goog-meta-"; + private final Map fieldsMap; private Builder() { - fieldsMap = new HashMap<>(); + this.fieldsMap = new HashMap<>(); } public PostFieldsV4 build() { @@ -121,7 +122,13 @@ public Builder setContentType(String contentType) { return this; } + /** @deprecated use {@link #setExpires(String)} */ + @Deprecated public Builder Expires(String expires) { + return setExpires(expires); + } + + public Builder setExpires(String expires) { fieldsMap.put("expires", expires); return this; } @@ -136,8 +143,17 @@ public Builder setSuccessActionStatus(int successActionStatus) { return this; } + /** @deprecated use {@link #setCustomMetadataField(String, String)} */ + @Deprecated public Builder AddCustomMetadataField(String field, String value) { - fieldsMap.put("x-goog-meta-" + field, value); + return setCustomMetadataField(field, value); + } + + public Builder setCustomMetadataField(String field, String value) { + if (!field.startsWith(CUSTOM_FIELD_PREFIX)) { + field = CUSTOM_FIELD_PREFIX + value; + } + fieldsMap.put(field, value); return this; } } @@ -270,8 +286,8 @@ Builder addCustomCondition(ConditionV4Type type, String field, String value) { * Policy document */ public static final class PostPolicyV4Document { - private String expiration; - private PostConditionsV4 conditions; + private final String expiration; + private final PostConditionsV4 conditions; private PostPolicyV4Document(String expiration, PostConditionsV4 conditions) { this.expiration = expiration; @@ -363,9 +379,9 @@ public enum ConditionV4Type { * Policy document */ static final class ConditionV4 { - ConditionV4Type type; - String operand1; - String operand2; + final ConditionV4Type type; + final String operand1; + final String operand2; private ConditionV4(ConditionV4Type type, String operand1, String operand2) { this.type = type;