001package com.box.sdkgen.schemas.folderfull;
002
003import com.box.sdkgen.schemas.folder.Folder;
004import com.box.sdkgen.schemas.folder.FolderFolderUploadEmailField;
005import com.box.sdkgen.schemas.folder.FolderItemStatusField;
006import com.box.sdkgen.schemas.folder.FolderPathCollectionField;
007import com.box.sdkgen.schemas.folder.FolderSharedLinkField;
008import com.box.sdkgen.schemas.folderbase.FolderBaseTypeField;
009import com.box.sdkgen.schemas.foldermini.FolderMini;
010import com.box.sdkgen.schemas.items.Items;
011import com.box.sdkgen.schemas.usermini.UserMini;
012import com.box.sdkgen.serialization.json.EnumWrapper;
013import com.box.sdkgen.serialization.json.Valuable;
014import com.fasterxml.jackson.annotation.JsonFilter;
015import com.fasterxml.jackson.annotation.JsonProperty;
016import com.fasterxml.jackson.core.JsonGenerator;
017import com.fasterxml.jackson.core.JsonParser;
018import com.fasterxml.jackson.databind.DeserializationContext;
019import com.fasterxml.jackson.databind.JsonDeserializer;
020import com.fasterxml.jackson.databind.JsonNode;
021import com.fasterxml.jackson.databind.JsonSerializer;
022import com.fasterxml.jackson.databind.SerializerProvider;
023import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
024import com.fasterxml.jackson.databind.annotation.JsonSerialize;
025import java.io.IOException;
026import java.time.OffsetDateTime;
027import java.util.ArrayList;
028import java.util.List;
029import java.util.Objects;
030
031/**
032 * A full representation of a folder, as can be returned from any folder API endpoints by default.
033 */
034@JsonFilter("nullablePropertyFilter")
035public class FolderFull extends Folder {
036
037  @JsonDeserialize(using = FolderFullSyncStateField.FolderFullSyncStateFieldDeserializer.class)
038  @JsonSerialize(using = FolderFullSyncStateField.FolderFullSyncStateFieldSerializer.class)
039  @JsonProperty("sync_state")
040  protected EnumWrapper<FolderFullSyncStateField> syncState;
041
042  /** Specifies if this folder has any other collaborators. */
043  @JsonProperty("has_collaborations")
044  protected Boolean hasCollaborations;
045
046  protected FolderFullPermissionsField permissions;
047
048  protected List<String> tags;
049
050  @JsonProperty("can_non_owners_invite")
051  protected Boolean canNonOwnersInvite;
052
053  /** Specifies if this folder is owned by a user outside of the authenticated enterprise. */
054  @JsonProperty("is_externally_owned")
055  protected Boolean isExternallyOwned;
056
057  protected FolderFullMetadataField metadata;
058
059  @JsonProperty("is_collaboration_restricted_to_enterprise")
060  protected Boolean isCollaborationRestrictedToEnterprise;
061
062  /**
063   * A list of access levels that are available for this folder.
064   *
065   * <p>For some folders, like the root folder, this will always be an empty list as sharing is not
066   * allowed at that level.
067   */
068  @JsonDeserialize(using = AllowedSharedLinkAccessLevelsDeserializer.class)
069  @JsonSerialize(using = AllowedSharedLinkAccessLevelsSerializer.class)
070  @JsonProperty("allowed_shared_link_access_levels")
071  protected List<EnumWrapper<FolderFullAllowedSharedLinkAccessLevelsField>>
072      allowedSharedLinkAccessLevels;
073
074  /** A list of the types of roles that user can be invited at when sharing this folder. */
075  @JsonDeserialize(using = AllowedInviteeRolesDeserializer.class)
076  @JsonSerialize(using = AllowedInviteeRolesSerializer.class)
077  @JsonProperty("allowed_invitee_roles")
078  protected List<EnumWrapper<FolderFullAllowedInviteeRolesField>> allowedInviteeRoles;
079
080  @JsonProperty("watermark_info")
081  protected FolderFullWatermarkInfoField watermarkInfo;
082
083  /**
084   * Specifies if the folder can be accessed with the direct shared link or a shared link to a
085   * parent folder.
086   */
087  @JsonProperty("is_accessible_via_shared_link")
088  protected Boolean isAccessibleViaSharedLink;
089
090  /**
091   * Specifies if collaborators who are not owners of this folder are restricted from viewing other
092   * collaborations on this folder.
093   *
094   * <p>It also restricts non-owners from inviting new collaborators.
095   */
096  @JsonProperty("can_non_owners_view_collaborators")
097  protected Boolean canNonOwnersViewCollaborators;
098
099  protected FolderFullClassificationField classification;
100
101  /**
102   * This field will return true if the folder or any ancestor of the folder is associated with at
103   * least one app item. Note that this will return true even if the context user does not have
104   * access to the app item(s) associated with the folder.
105   */
106  @JsonProperty("is_associated_with_app_item")
107  protected Boolean isAssociatedWithAppItem;
108
109  public FolderFull(@JsonProperty("id") String id) {
110    super(id);
111  }
112
113  protected FolderFull(Builder builder) {
114    super(builder);
115    this.syncState = builder.syncState;
116    this.hasCollaborations = builder.hasCollaborations;
117    this.permissions = builder.permissions;
118    this.tags = builder.tags;
119    this.canNonOwnersInvite = builder.canNonOwnersInvite;
120    this.isExternallyOwned = builder.isExternallyOwned;
121    this.metadata = builder.metadata;
122    this.isCollaborationRestrictedToEnterprise = builder.isCollaborationRestrictedToEnterprise;
123    this.allowedSharedLinkAccessLevels = builder.allowedSharedLinkAccessLevels;
124    this.allowedInviteeRoles = builder.allowedInviteeRoles;
125    this.watermarkInfo = builder.watermarkInfo;
126    this.isAccessibleViaSharedLink = builder.isAccessibleViaSharedLink;
127    this.canNonOwnersViewCollaborators = builder.canNonOwnersViewCollaborators;
128    this.classification = builder.classification;
129    this.isAssociatedWithAppItem = builder.isAssociatedWithAppItem;
130    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
131  }
132
133  public EnumWrapper<FolderFullSyncStateField> getSyncState() {
134    return syncState;
135  }
136
137  public Boolean getHasCollaborations() {
138    return hasCollaborations;
139  }
140
141  public FolderFullPermissionsField getPermissions() {
142    return permissions;
143  }
144
145  public List<String> getTags() {
146    return tags;
147  }
148
149  public Boolean getCanNonOwnersInvite() {
150    return canNonOwnersInvite;
151  }
152
153  public Boolean getIsExternallyOwned() {
154    return isExternallyOwned;
155  }
156
157  public FolderFullMetadataField getMetadata() {
158    return metadata;
159  }
160
161  public Boolean getIsCollaborationRestrictedToEnterprise() {
162    return isCollaborationRestrictedToEnterprise;
163  }
164
165  public List<EnumWrapper<FolderFullAllowedSharedLinkAccessLevelsField>>
166      getAllowedSharedLinkAccessLevels() {
167    return allowedSharedLinkAccessLevels;
168  }
169
170  public List<EnumWrapper<FolderFullAllowedInviteeRolesField>> getAllowedInviteeRoles() {
171    return allowedInviteeRoles;
172  }
173
174  public FolderFullWatermarkInfoField getWatermarkInfo() {
175    return watermarkInfo;
176  }
177
178  public Boolean getIsAccessibleViaSharedLink() {
179    return isAccessibleViaSharedLink;
180  }
181
182  public Boolean getCanNonOwnersViewCollaborators() {
183    return canNonOwnersViewCollaborators;
184  }
185
186  public FolderFullClassificationField getClassification() {
187    return classification;
188  }
189
190  public Boolean getIsAssociatedWithAppItem() {
191    return isAssociatedWithAppItem;
192  }
193
194  @Override
195  public boolean equals(Object o) {
196    if (this == o) {
197      return true;
198    }
199    if (o == null || getClass() != o.getClass()) {
200      return false;
201    }
202    FolderFull casted = (FolderFull) o;
203    return Objects.equals(id, casted.id)
204        && Objects.equals(etag, casted.etag)
205        && Objects.equals(type, casted.type)
206        && Objects.equals(sequenceId, casted.sequenceId)
207        && Objects.equals(name, casted.name)
208        && Objects.equals(createdAt, casted.createdAt)
209        && Objects.equals(modifiedAt, casted.modifiedAt)
210        && Objects.equals(description, casted.description)
211        && Objects.equals(size, casted.size)
212        && Objects.equals(pathCollection, casted.pathCollection)
213        && Objects.equals(createdBy, casted.createdBy)
214        && Objects.equals(modifiedBy, casted.modifiedBy)
215        && Objects.equals(trashedAt, casted.trashedAt)
216        && Objects.equals(purgedAt, casted.purgedAt)
217        && Objects.equals(contentCreatedAt, casted.contentCreatedAt)
218        && Objects.equals(contentModifiedAt, casted.contentModifiedAt)
219        && Objects.equals(ownedBy, casted.ownedBy)
220        && Objects.equals(sharedLink, casted.sharedLink)
221        && Objects.equals(folderUploadEmail, casted.folderUploadEmail)
222        && Objects.equals(parent, casted.parent)
223        && Objects.equals(itemStatus, casted.itemStatus)
224        && Objects.equals(itemCollection, casted.itemCollection)
225        && Objects.equals(syncState, casted.syncState)
226        && Objects.equals(hasCollaborations, casted.hasCollaborations)
227        && Objects.equals(permissions, casted.permissions)
228        && Objects.equals(tags, casted.tags)
229        && Objects.equals(canNonOwnersInvite, casted.canNonOwnersInvite)
230        && Objects.equals(isExternallyOwned, casted.isExternallyOwned)
231        && Objects.equals(metadata, casted.metadata)
232        && Objects.equals(
233            isCollaborationRestrictedToEnterprise, casted.isCollaborationRestrictedToEnterprise)
234        && Objects.equals(allowedSharedLinkAccessLevels, casted.allowedSharedLinkAccessLevels)
235        && Objects.equals(allowedInviteeRoles, casted.allowedInviteeRoles)
236        && Objects.equals(watermarkInfo, casted.watermarkInfo)
237        && Objects.equals(isAccessibleViaSharedLink, casted.isAccessibleViaSharedLink)
238        && Objects.equals(canNonOwnersViewCollaborators, casted.canNonOwnersViewCollaborators)
239        && Objects.equals(classification, casted.classification)
240        && Objects.equals(isAssociatedWithAppItem, casted.isAssociatedWithAppItem);
241  }
242
243  @Override
244  public int hashCode() {
245    return Objects.hash(
246        id,
247        etag,
248        type,
249        sequenceId,
250        name,
251        createdAt,
252        modifiedAt,
253        description,
254        size,
255        pathCollection,
256        createdBy,
257        modifiedBy,
258        trashedAt,
259        purgedAt,
260        contentCreatedAt,
261        contentModifiedAt,
262        ownedBy,
263        sharedLink,
264        folderUploadEmail,
265        parent,
266        itemStatus,
267        itemCollection,
268        syncState,
269        hasCollaborations,
270        permissions,
271        tags,
272        canNonOwnersInvite,
273        isExternallyOwned,
274        metadata,
275        isCollaborationRestrictedToEnterprise,
276        allowedSharedLinkAccessLevels,
277        allowedInviteeRoles,
278        watermarkInfo,
279        isAccessibleViaSharedLink,
280        canNonOwnersViewCollaborators,
281        classification,
282        isAssociatedWithAppItem);
283  }
284
285  @Override
286  public String toString() {
287    return "FolderFull{"
288        + "id='"
289        + id
290        + '\''
291        + ", "
292        + "etag='"
293        + etag
294        + '\''
295        + ", "
296        + "type='"
297        + type
298        + '\''
299        + ", "
300        + "sequenceId='"
301        + sequenceId
302        + '\''
303        + ", "
304        + "name='"
305        + name
306        + '\''
307        + ", "
308        + "createdAt='"
309        + createdAt
310        + '\''
311        + ", "
312        + "modifiedAt='"
313        + modifiedAt
314        + '\''
315        + ", "
316        + "description='"
317        + description
318        + '\''
319        + ", "
320        + "size='"
321        + size
322        + '\''
323        + ", "
324        + "pathCollection='"
325        + pathCollection
326        + '\''
327        + ", "
328        + "createdBy='"
329        + createdBy
330        + '\''
331        + ", "
332        + "modifiedBy='"
333        + modifiedBy
334        + '\''
335        + ", "
336        + "trashedAt='"
337        + trashedAt
338        + '\''
339        + ", "
340        + "purgedAt='"
341        + purgedAt
342        + '\''
343        + ", "
344        + "contentCreatedAt='"
345        + contentCreatedAt
346        + '\''
347        + ", "
348        + "contentModifiedAt='"
349        + contentModifiedAt
350        + '\''
351        + ", "
352        + "ownedBy='"
353        + ownedBy
354        + '\''
355        + ", "
356        + "sharedLink='"
357        + sharedLink
358        + '\''
359        + ", "
360        + "folderUploadEmail='"
361        + folderUploadEmail
362        + '\''
363        + ", "
364        + "parent='"
365        + parent
366        + '\''
367        + ", "
368        + "itemStatus='"
369        + itemStatus
370        + '\''
371        + ", "
372        + "itemCollection='"
373        + itemCollection
374        + '\''
375        + ", "
376        + "syncState='"
377        + syncState
378        + '\''
379        + ", "
380        + "hasCollaborations='"
381        + hasCollaborations
382        + '\''
383        + ", "
384        + "permissions='"
385        + permissions
386        + '\''
387        + ", "
388        + "tags='"
389        + tags
390        + '\''
391        + ", "
392        + "canNonOwnersInvite='"
393        + canNonOwnersInvite
394        + '\''
395        + ", "
396        + "isExternallyOwned='"
397        + isExternallyOwned
398        + '\''
399        + ", "
400        + "metadata='"
401        + metadata
402        + '\''
403        + ", "
404        + "isCollaborationRestrictedToEnterprise='"
405        + isCollaborationRestrictedToEnterprise
406        + '\''
407        + ", "
408        + "allowedSharedLinkAccessLevels='"
409        + allowedSharedLinkAccessLevels
410        + '\''
411        + ", "
412        + "allowedInviteeRoles='"
413        + allowedInviteeRoles
414        + '\''
415        + ", "
416        + "watermarkInfo='"
417        + watermarkInfo
418        + '\''
419        + ", "
420        + "isAccessibleViaSharedLink='"
421        + isAccessibleViaSharedLink
422        + '\''
423        + ", "
424        + "canNonOwnersViewCollaborators='"
425        + canNonOwnersViewCollaborators
426        + '\''
427        + ", "
428        + "classification='"
429        + classification
430        + '\''
431        + ", "
432        + "isAssociatedWithAppItem='"
433        + isAssociatedWithAppItem
434        + '\''
435        + "}";
436  }
437
438  public static class Builder extends Folder.Builder {
439
440    protected EnumWrapper<FolderFullSyncStateField> syncState;
441
442    protected Boolean hasCollaborations;
443
444    protected FolderFullPermissionsField permissions;
445
446    protected List<String> tags;
447
448    protected Boolean canNonOwnersInvite;
449
450    protected Boolean isExternallyOwned;
451
452    protected FolderFullMetadataField metadata;
453
454    protected Boolean isCollaborationRestrictedToEnterprise;
455
456    protected List<EnumWrapper<FolderFullAllowedSharedLinkAccessLevelsField>>
457        allowedSharedLinkAccessLevels;
458
459    protected List<EnumWrapper<FolderFullAllowedInviteeRolesField>> allowedInviteeRoles;
460
461    protected FolderFullWatermarkInfoField watermarkInfo;
462
463    protected Boolean isAccessibleViaSharedLink;
464
465    protected Boolean canNonOwnersViewCollaborators;
466
467    protected FolderFullClassificationField classification;
468
469    protected Boolean isAssociatedWithAppItem;
470
471    public Builder(String id) {
472      super(id);
473    }
474
475    public Builder syncState(FolderFullSyncStateField syncState) {
476      this.syncState = new EnumWrapper<FolderFullSyncStateField>(syncState);
477      return this;
478    }
479
480    public Builder syncState(EnumWrapper<FolderFullSyncStateField> syncState) {
481      this.syncState = syncState;
482      return this;
483    }
484
485    public Builder hasCollaborations(Boolean hasCollaborations) {
486      this.hasCollaborations = hasCollaborations;
487      return this;
488    }
489
490    public Builder permissions(FolderFullPermissionsField permissions) {
491      this.permissions = permissions;
492      return this;
493    }
494
495    public Builder tags(List<String> tags) {
496      this.tags = tags;
497      return this;
498    }
499
500    public Builder canNonOwnersInvite(Boolean canNonOwnersInvite) {
501      this.canNonOwnersInvite = canNonOwnersInvite;
502      return this;
503    }
504
505    public Builder isExternallyOwned(Boolean isExternallyOwned) {
506      this.isExternallyOwned = isExternallyOwned;
507      return this;
508    }
509
510    public Builder metadata(FolderFullMetadataField metadata) {
511      this.metadata = metadata;
512      return this;
513    }
514
515    public Builder isCollaborationRestrictedToEnterprise(
516        Boolean isCollaborationRestrictedToEnterprise) {
517      this.isCollaborationRestrictedToEnterprise = isCollaborationRestrictedToEnterprise;
518      return this;
519    }
520
521    public Builder allowedSharedLinkAccessLevels(
522        List<? extends Valuable> allowedSharedLinkAccessLevels) {
523      this.allowedSharedLinkAccessLevels =
524          EnumWrapper.wrapValuableEnumList(
525              allowedSharedLinkAccessLevels, FolderFullAllowedSharedLinkAccessLevelsField.class);
526      return this;
527    }
528
529    public Builder allowedInviteeRoles(List<? extends Valuable> allowedInviteeRoles) {
530      this.allowedInviteeRoles =
531          EnumWrapper.wrapValuableEnumList(
532              allowedInviteeRoles, FolderFullAllowedInviteeRolesField.class);
533      return this;
534    }
535
536    public Builder watermarkInfo(FolderFullWatermarkInfoField watermarkInfo) {
537      this.watermarkInfo = watermarkInfo;
538      return this;
539    }
540
541    public Builder isAccessibleViaSharedLink(Boolean isAccessibleViaSharedLink) {
542      this.isAccessibleViaSharedLink = isAccessibleViaSharedLink;
543      return this;
544    }
545
546    public Builder canNonOwnersViewCollaborators(Boolean canNonOwnersViewCollaborators) {
547      this.canNonOwnersViewCollaborators = canNonOwnersViewCollaborators;
548      return this;
549    }
550
551    public Builder classification(FolderFullClassificationField classification) {
552      this.classification = classification;
553      return this;
554    }
555
556    public Builder isAssociatedWithAppItem(Boolean isAssociatedWithAppItem) {
557      this.isAssociatedWithAppItem = isAssociatedWithAppItem;
558      return this;
559    }
560
561    @Override
562    public Builder etag(String etag) {
563      this.etag = etag;
564      this.markNullableFieldAsSet("etag");
565      return this;
566    }
567
568    @Override
569    public Builder type(FolderBaseTypeField type) {
570      this.type = new EnumWrapper<FolderBaseTypeField>(type);
571      return this;
572    }
573
574    @Override
575    public Builder type(EnumWrapper<FolderBaseTypeField> type) {
576      this.type = type;
577      return this;
578    }
579
580    @Override
581    public Builder sequenceId(String sequenceId) {
582      this.sequenceId = sequenceId;
583      return this;
584    }
585
586    @Override
587    public Builder name(String name) {
588      this.name = name;
589      return this;
590    }
591
592    @Override
593    public Builder createdAt(OffsetDateTime createdAt) {
594      this.createdAt = createdAt;
595      this.markNullableFieldAsSet("created_at");
596      return this;
597    }
598
599    @Override
600    public Builder modifiedAt(OffsetDateTime modifiedAt) {
601      this.modifiedAt = modifiedAt;
602      this.markNullableFieldAsSet("modified_at");
603      return this;
604    }
605
606    @Override
607    public Builder description(String description) {
608      this.description = description;
609      return this;
610    }
611
612    @Override
613    public Builder size(Long size) {
614      this.size = size;
615      return this;
616    }
617
618    @Override
619    public Builder pathCollection(FolderPathCollectionField pathCollection) {
620      this.pathCollection = pathCollection;
621      return this;
622    }
623
624    @Override
625    public Builder createdBy(UserMini createdBy) {
626      this.createdBy = createdBy;
627      return this;
628    }
629
630    @Override
631    public Builder modifiedBy(UserMini modifiedBy) {
632      this.modifiedBy = modifiedBy;
633      return this;
634    }
635
636    @Override
637    public Builder trashedAt(OffsetDateTime trashedAt) {
638      this.trashedAt = trashedAt;
639      this.markNullableFieldAsSet("trashed_at");
640      return this;
641    }
642
643    @Override
644    public Builder purgedAt(OffsetDateTime purgedAt) {
645      this.purgedAt = purgedAt;
646      this.markNullableFieldAsSet("purged_at");
647      return this;
648    }
649
650    @Override
651    public Builder contentCreatedAt(OffsetDateTime contentCreatedAt) {
652      this.contentCreatedAt = contentCreatedAt;
653      this.markNullableFieldAsSet("content_created_at");
654      return this;
655    }
656
657    @Override
658    public Builder contentModifiedAt(OffsetDateTime contentModifiedAt) {
659      this.contentModifiedAt = contentModifiedAt;
660      this.markNullableFieldAsSet("content_modified_at");
661      return this;
662    }
663
664    @Override
665    public Builder ownedBy(UserMini ownedBy) {
666      this.ownedBy = ownedBy;
667      return this;
668    }
669
670    @Override
671    public Builder sharedLink(FolderSharedLinkField sharedLink) {
672      this.sharedLink = sharedLink;
673      this.markNullableFieldAsSet("shared_link");
674      return this;
675    }
676
677    @Override
678    public Builder folderUploadEmail(FolderFolderUploadEmailField folderUploadEmail) {
679      this.folderUploadEmail = folderUploadEmail;
680      this.markNullableFieldAsSet("folder_upload_email");
681      return this;
682    }
683
684    @Override
685    public Builder parent(FolderMini parent) {
686      this.parent = parent;
687      this.markNullableFieldAsSet("parent");
688      return this;
689    }
690
691    @Override
692    public Builder itemStatus(FolderItemStatusField itemStatus) {
693      this.itemStatus = new EnumWrapper<FolderItemStatusField>(itemStatus);
694      return this;
695    }
696
697    @Override
698    public Builder itemStatus(EnumWrapper<FolderItemStatusField> itemStatus) {
699      this.itemStatus = itemStatus;
700      return this;
701    }
702
703    @Override
704    public Builder itemCollection(Items itemCollection) {
705      this.itemCollection = itemCollection;
706      return this;
707    }
708
709    public FolderFull build() {
710      if (this.type == null) {
711        this.type = new EnumWrapper<FolderBaseTypeField>(FolderBaseTypeField.FOLDER);
712      }
713      return new FolderFull(this);
714    }
715  }
716
717  public static class AllowedSharedLinkAccessLevelsDeserializer
718      extends JsonDeserializer<List<EnumWrapper<FolderFullAllowedSharedLinkAccessLevelsField>>> {
719
720    public final JsonDeserializer<EnumWrapper<FolderFullAllowedSharedLinkAccessLevelsField>>
721        elementDeserializer;
722
723    public AllowedSharedLinkAccessLevelsDeserializer() {
724      super();
725      this.elementDeserializer =
726          new FolderFullAllowedSharedLinkAccessLevelsField
727              .FolderFullAllowedSharedLinkAccessLevelsFieldDeserializer();
728    }
729
730    @Override
731    public List<EnumWrapper<FolderFullAllowedSharedLinkAccessLevelsField>> deserialize(
732        JsonParser p, DeserializationContext ctxt) throws IOException {
733      JsonNode node = p.getCodec().readTree(p);
734      List<EnumWrapper<FolderFullAllowedSharedLinkAccessLevelsField>> elements = new ArrayList<>();
735      for (JsonNode item : node) {
736        JsonParser pa = item.traverse(p.getCodec());
737        pa.nextToken();
738        elements.add(elementDeserializer.deserialize(pa, ctxt));
739      }
740      return elements;
741    }
742  }
743
744  public static class AllowedSharedLinkAccessLevelsSerializer
745      extends JsonSerializer<List<EnumWrapper<FolderFullAllowedSharedLinkAccessLevelsField>>> {
746
747    public final JsonSerializer<EnumWrapper<FolderFullAllowedSharedLinkAccessLevelsField>>
748        elementSerializer;
749
750    public AllowedSharedLinkAccessLevelsSerializer() {
751      super();
752      this.elementSerializer =
753          new FolderFullAllowedSharedLinkAccessLevelsField
754              .FolderFullAllowedSharedLinkAccessLevelsFieldSerializer();
755    }
756
757    @Override
758    public void serialize(
759        List<EnumWrapper<FolderFullAllowedSharedLinkAccessLevelsField>> value,
760        JsonGenerator gen,
761        SerializerProvider serializers)
762        throws IOException {
763      gen.writeStartArray();
764      for (EnumWrapper<FolderFullAllowedSharedLinkAccessLevelsField> item : value) {
765        elementSerializer.serialize(item, gen, serializers);
766      }
767      gen.writeEndArray();
768    }
769  }
770
771  public static class AllowedInviteeRolesDeserializer
772      extends JsonDeserializer<List<EnumWrapper<FolderFullAllowedInviteeRolesField>>> {
773
774    public final JsonDeserializer<EnumWrapper<FolderFullAllowedInviteeRolesField>>
775        elementDeserializer;
776
777    public AllowedInviteeRolesDeserializer() {
778      super();
779      this.elementDeserializer =
780          new FolderFullAllowedInviteeRolesField.FolderFullAllowedInviteeRolesFieldDeserializer();
781    }
782
783    @Override
784    public List<EnumWrapper<FolderFullAllowedInviteeRolesField>> deserialize(
785        JsonParser p, DeserializationContext ctxt) throws IOException {
786      JsonNode node = p.getCodec().readTree(p);
787      List<EnumWrapper<FolderFullAllowedInviteeRolesField>> elements = new ArrayList<>();
788      for (JsonNode item : node) {
789        JsonParser pa = item.traverse(p.getCodec());
790        pa.nextToken();
791        elements.add(elementDeserializer.deserialize(pa, ctxt));
792      }
793      return elements;
794    }
795  }
796
797  public static class AllowedInviteeRolesSerializer
798      extends JsonSerializer<List<EnumWrapper<FolderFullAllowedInviteeRolesField>>> {
799
800    public final JsonSerializer<EnumWrapper<FolderFullAllowedInviteeRolesField>> elementSerializer;
801
802    public AllowedInviteeRolesSerializer() {
803      super();
804      this.elementSerializer =
805          new FolderFullAllowedInviteeRolesField.FolderFullAllowedInviteeRolesFieldSerializer();
806    }
807
808    @Override
809    public void serialize(
810        List<EnumWrapper<FolderFullAllowedInviteeRolesField>> value,
811        JsonGenerator gen,
812        SerializerProvider serializers)
813        throws IOException {
814      gen.writeStartArray();
815      for (EnumWrapper<FolderFullAllowedInviteeRolesField> item : value) {
816        elementSerializer.serialize(item, gen, serializers);
817      }
818      gen.writeEndArray();
819    }
820  }
821}