001package com.box.sdkgen.schemas.filefull; 002 003import com.box.sdkgen.internal.Nullable; 004import com.box.sdkgen.internal.utils.DateTimeUtils; 005import com.box.sdkgen.schemas.file.File; 006import com.box.sdkgen.schemas.file.FileItemStatusField; 007import com.box.sdkgen.schemas.file.FilePathCollectionField; 008import com.box.sdkgen.schemas.file.FileSharedLinkField; 009import com.box.sdkgen.schemas.filebase.FileBaseTypeField; 010import com.box.sdkgen.schemas.fileversionmini.FileVersionMini; 011import com.box.sdkgen.schemas.foldermini.FolderMini; 012import com.box.sdkgen.schemas.usermini.UserMini; 013import com.box.sdkgen.serialization.json.EnumWrapper; 014import com.box.sdkgen.serialization.json.Valuable; 015import com.fasterxml.jackson.annotation.JsonFilter; 016import com.fasterxml.jackson.annotation.JsonProperty; 017import com.fasterxml.jackson.core.JsonGenerator; 018import com.fasterxml.jackson.core.JsonParser; 019import com.fasterxml.jackson.databind.DeserializationContext; 020import com.fasterxml.jackson.databind.JsonDeserializer; 021import com.fasterxml.jackson.databind.JsonNode; 022import com.fasterxml.jackson.databind.JsonSerializer; 023import com.fasterxml.jackson.databind.SerializerProvider; 024import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 025import com.fasterxml.jackson.databind.annotation.JsonSerialize; 026import java.io.IOException; 027import java.time.OffsetDateTime; 028import java.util.ArrayList; 029import java.util.List; 030import java.util.Objects; 031 032/** A full representation of a file, as can be returned from any file API endpoints by default. */ 033@JsonFilter("nullablePropertyFilter") 034public class FileFull extends File { 035 036 /** The version number of this file. */ 037 @JsonProperty("version_number") 038 protected String versionNumber; 039 040 /** The number of comments on this file. */ 041 @JsonProperty("comment_count") 042 protected Long commentCount; 043 044 protected FileFullPermissionsField permissions; 045 046 protected List<String> tags; 047 048 @Nullable protected FileFullLockField lock; 049 050 /** 051 * Indicates the (optional) file extension for this file. By default, this is set to an empty 052 * string. 053 */ 054 protected String extension; 055 056 /** 057 * Indicates if the file is a package. Packages are commonly used by Mac Applications and can 058 * include iWork files. 059 */ 060 @JsonProperty("is_package") 061 protected Boolean isPackage; 062 063 @JsonProperty("expiring_embed_link") 064 protected FileFullExpiringEmbedLinkField expiringEmbedLink; 065 066 @JsonProperty("watermark_info") 067 protected FileFullWatermarkInfoField watermarkInfo; 068 069 /** 070 * Specifies if the file can be accessed via the direct shared link or a shared link to a parent 071 * folder. 072 */ 073 @JsonProperty("is_accessible_via_shared_link") 074 protected Boolean isAccessibleViaSharedLink; 075 076 /** A list of the types of roles that user can be invited at when sharing this file. */ 077 @JsonDeserialize(using = AllowedInviteeRolesDeserializer.class) 078 @JsonSerialize(using = AllowedInviteeRolesSerializer.class) 079 @JsonProperty("allowed_invitee_roles") 080 protected List<EnumWrapper<FileFullAllowedInviteeRolesField>> allowedInviteeRoles; 081 082 /** Specifies if this file is owned by a user outside of the authenticated enterprise. */ 083 @JsonProperty("is_externally_owned") 084 protected Boolean isExternallyOwned; 085 086 /** Specifies if this file has any other collaborators. */ 087 @JsonProperty("has_collaborations") 088 protected Boolean hasCollaborations; 089 090 protected FileFullMetadataField metadata; 091 092 /** When the file will automatically be deleted. */ 093 @JsonProperty("expires_at") 094 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 095 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 096 @Nullable 097 protected OffsetDateTime expiresAt; 098 099 protected FileFullRepresentationsField representations; 100 101 protected FileFullClassificationField classification; 102 103 @JsonProperty("uploader_display_name") 104 protected String uploaderDisplayName; 105 106 /** The retention expiration timestamp for the given file. */ 107 @JsonProperty("disposition_at") 108 @JsonSerialize(using = DateTimeUtils.DateTimeSerializer.class) 109 @JsonDeserialize(using = DateTimeUtils.DateTimeDeserializer.class) 110 @Nullable 111 protected OffsetDateTime dispositionAt; 112 113 /** A list of the types of roles that user can be invited at when sharing this file. */ 114 @JsonDeserialize(using = SharedLinkPermissionOptionsDeserializer.class) 115 @JsonSerialize(using = SharedLinkPermissionOptionsSerializer.class) 116 @JsonProperty("shared_link_permission_options") 117 @Nullable 118 protected List<EnumWrapper<FileFullSharedLinkPermissionOptionsField>> sharedLinkPermissionOptions; 119 120 /** 121 * This field will return true if the file or any ancestor of the file is associated with at least 122 * one app item. Note that this will return true even if the context user does not have access to 123 * the app item(s) associated with the file. 124 */ 125 @JsonProperty("is_associated_with_app_item") 126 protected Boolean isAssociatedWithAppItem; 127 128 public FileFull(@JsonProperty("id") String id) { 129 super(id); 130 } 131 132 protected FileFull(Builder builder) { 133 super(builder); 134 this.versionNumber = builder.versionNumber; 135 this.commentCount = builder.commentCount; 136 this.permissions = builder.permissions; 137 this.tags = builder.tags; 138 this.lock = builder.lock; 139 this.extension = builder.extension; 140 this.isPackage = builder.isPackage; 141 this.expiringEmbedLink = builder.expiringEmbedLink; 142 this.watermarkInfo = builder.watermarkInfo; 143 this.isAccessibleViaSharedLink = builder.isAccessibleViaSharedLink; 144 this.allowedInviteeRoles = builder.allowedInviteeRoles; 145 this.isExternallyOwned = builder.isExternallyOwned; 146 this.hasCollaborations = builder.hasCollaborations; 147 this.metadata = builder.metadata; 148 this.expiresAt = builder.expiresAt; 149 this.representations = builder.representations; 150 this.classification = builder.classification; 151 this.uploaderDisplayName = builder.uploaderDisplayName; 152 this.dispositionAt = builder.dispositionAt; 153 this.sharedLinkPermissionOptions = builder.sharedLinkPermissionOptions; 154 this.isAssociatedWithAppItem = builder.isAssociatedWithAppItem; 155 markNullableFieldsAsSet(builder.getExplicitlySetNullableFields()); 156 } 157 158 public String getVersionNumber() { 159 return versionNumber; 160 } 161 162 public Long getCommentCount() { 163 return commentCount; 164 } 165 166 public FileFullPermissionsField getPermissions() { 167 return permissions; 168 } 169 170 public List<String> getTags() { 171 return tags; 172 } 173 174 public FileFullLockField getLock() { 175 return lock; 176 } 177 178 public String getExtension() { 179 return extension; 180 } 181 182 public Boolean getIsPackage() { 183 return isPackage; 184 } 185 186 public FileFullExpiringEmbedLinkField getExpiringEmbedLink() { 187 return expiringEmbedLink; 188 } 189 190 public FileFullWatermarkInfoField getWatermarkInfo() { 191 return watermarkInfo; 192 } 193 194 public Boolean getIsAccessibleViaSharedLink() { 195 return isAccessibleViaSharedLink; 196 } 197 198 public List<EnumWrapper<FileFullAllowedInviteeRolesField>> getAllowedInviteeRoles() { 199 return allowedInviteeRoles; 200 } 201 202 public Boolean getIsExternallyOwned() { 203 return isExternallyOwned; 204 } 205 206 public Boolean getHasCollaborations() { 207 return hasCollaborations; 208 } 209 210 public FileFullMetadataField getMetadata() { 211 return metadata; 212 } 213 214 public OffsetDateTime getExpiresAt() { 215 return expiresAt; 216 } 217 218 public FileFullRepresentationsField getRepresentations() { 219 return representations; 220 } 221 222 public FileFullClassificationField getClassification() { 223 return classification; 224 } 225 226 public String getUploaderDisplayName() { 227 return uploaderDisplayName; 228 } 229 230 public OffsetDateTime getDispositionAt() { 231 return dispositionAt; 232 } 233 234 public List<EnumWrapper<FileFullSharedLinkPermissionOptionsField>> 235 getSharedLinkPermissionOptions() { 236 return sharedLinkPermissionOptions; 237 } 238 239 public Boolean getIsAssociatedWithAppItem() { 240 return isAssociatedWithAppItem; 241 } 242 243 @Override 244 public boolean equals(Object o) { 245 if (this == o) { 246 return true; 247 } 248 if (o == null || getClass() != o.getClass()) { 249 return false; 250 } 251 FileFull casted = (FileFull) o; 252 return Objects.equals(id, casted.id) 253 && Objects.equals(etag, casted.etag) 254 && Objects.equals(type, casted.type) 255 && Objects.equals(sequenceId, casted.sequenceId) 256 && Objects.equals(name, casted.name) 257 && Objects.equals(sha1, casted.sha1) 258 && Objects.equals(fileVersion, casted.fileVersion) 259 && Objects.equals(description, casted.description) 260 && Objects.equals(size, casted.size) 261 && Objects.equals(pathCollection, casted.pathCollection) 262 && Objects.equals(createdAt, casted.createdAt) 263 && Objects.equals(modifiedAt, casted.modifiedAt) 264 && Objects.equals(trashedAt, casted.trashedAt) 265 && Objects.equals(purgedAt, casted.purgedAt) 266 && Objects.equals(contentCreatedAt, casted.contentCreatedAt) 267 && Objects.equals(contentModifiedAt, casted.contentModifiedAt) 268 && Objects.equals(createdBy, casted.createdBy) 269 && Objects.equals(modifiedBy, casted.modifiedBy) 270 && Objects.equals(ownedBy, casted.ownedBy) 271 && Objects.equals(sharedLink, casted.sharedLink) 272 && Objects.equals(parent, casted.parent) 273 && Objects.equals(itemStatus, casted.itemStatus) 274 && Objects.equals(versionNumber, casted.versionNumber) 275 && Objects.equals(commentCount, casted.commentCount) 276 && Objects.equals(permissions, casted.permissions) 277 && Objects.equals(tags, casted.tags) 278 && Objects.equals(lock, casted.lock) 279 && Objects.equals(extension, casted.extension) 280 && Objects.equals(isPackage, casted.isPackage) 281 && Objects.equals(expiringEmbedLink, casted.expiringEmbedLink) 282 && Objects.equals(watermarkInfo, casted.watermarkInfo) 283 && Objects.equals(isAccessibleViaSharedLink, casted.isAccessibleViaSharedLink) 284 && Objects.equals(allowedInviteeRoles, casted.allowedInviteeRoles) 285 && Objects.equals(isExternallyOwned, casted.isExternallyOwned) 286 && Objects.equals(hasCollaborations, casted.hasCollaborations) 287 && Objects.equals(metadata, casted.metadata) 288 && Objects.equals(expiresAt, casted.expiresAt) 289 && Objects.equals(representations, casted.representations) 290 && Objects.equals(classification, casted.classification) 291 && Objects.equals(uploaderDisplayName, casted.uploaderDisplayName) 292 && Objects.equals(dispositionAt, casted.dispositionAt) 293 && Objects.equals(sharedLinkPermissionOptions, casted.sharedLinkPermissionOptions) 294 && Objects.equals(isAssociatedWithAppItem, casted.isAssociatedWithAppItem); 295 } 296 297 @Override 298 public int hashCode() { 299 return Objects.hash( 300 id, 301 etag, 302 type, 303 sequenceId, 304 name, 305 sha1, 306 fileVersion, 307 description, 308 size, 309 pathCollection, 310 createdAt, 311 modifiedAt, 312 trashedAt, 313 purgedAt, 314 contentCreatedAt, 315 contentModifiedAt, 316 createdBy, 317 modifiedBy, 318 ownedBy, 319 sharedLink, 320 parent, 321 itemStatus, 322 versionNumber, 323 commentCount, 324 permissions, 325 tags, 326 lock, 327 extension, 328 isPackage, 329 expiringEmbedLink, 330 watermarkInfo, 331 isAccessibleViaSharedLink, 332 allowedInviteeRoles, 333 isExternallyOwned, 334 hasCollaborations, 335 metadata, 336 expiresAt, 337 representations, 338 classification, 339 uploaderDisplayName, 340 dispositionAt, 341 sharedLinkPermissionOptions, 342 isAssociatedWithAppItem); 343 } 344 345 @Override 346 public String toString() { 347 return "FileFull{" 348 + "id='" 349 + id 350 + '\'' 351 + ", " 352 + "etag='" 353 + etag 354 + '\'' 355 + ", " 356 + "type='" 357 + type 358 + '\'' 359 + ", " 360 + "sequenceId='" 361 + sequenceId 362 + '\'' 363 + ", " 364 + "name='" 365 + name 366 + '\'' 367 + ", " 368 + "sha1='" 369 + sha1 370 + '\'' 371 + ", " 372 + "fileVersion='" 373 + fileVersion 374 + '\'' 375 + ", " 376 + "description='" 377 + description 378 + '\'' 379 + ", " 380 + "size='" 381 + size 382 + '\'' 383 + ", " 384 + "pathCollection='" 385 + pathCollection 386 + '\'' 387 + ", " 388 + "createdAt='" 389 + createdAt 390 + '\'' 391 + ", " 392 + "modifiedAt='" 393 + modifiedAt 394 + '\'' 395 + ", " 396 + "trashedAt='" 397 + trashedAt 398 + '\'' 399 + ", " 400 + "purgedAt='" 401 + purgedAt 402 + '\'' 403 + ", " 404 + "contentCreatedAt='" 405 + contentCreatedAt 406 + '\'' 407 + ", " 408 + "contentModifiedAt='" 409 + contentModifiedAt 410 + '\'' 411 + ", " 412 + "createdBy='" 413 + createdBy 414 + '\'' 415 + ", " 416 + "modifiedBy='" 417 + modifiedBy 418 + '\'' 419 + ", " 420 + "ownedBy='" 421 + ownedBy 422 + '\'' 423 + ", " 424 + "sharedLink='" 425 + sharedLink 426 + '\'' 427 + ", " 428 + "parent='" 429 + parent 430 + '\'' 431 + ", " 432 + "itemStatus='" 433 + itemStatus 434 + '\'' 435 + ", " 436 + "versionNumber='" 437 + versionNumber 438 + '\'' 439 + ", " 440 + "commentCount='" 441 + commentCount 442 + '\'' 443 + ", " 444 + "permissions='" 445 + permissions 446 + '\'' 447 + ", " 448 + "tags='" 449 + tags 450 + '\'' 451 + ", " 452 + "lock='" 453 + lock 454 + '\'' 455 + ", " 456 + "extension='" 457 + extension 458 + '\'' 459 + ", " 460 + "isPackage='" 461 + isPackage 462 + '\'' 463 + ", " 464 + "expiringEmbedLink='" 465 + expiringEmbedLink 466 + '\'' 467 + ", " 468 + "watermarkInfo='" 469 + watermarkInfo 470 + '\'' 471 + ", " 472 + "isAccessibleViaSharedLink='" 473 + isAccessibleViaSharedLink 474 + '\'' 475 + ", " 476 + "allowedInviteeRoles='" 477 + allowedInviteeRoles 478 + '\'' 479 + ", " 480 + "isExternallyOwned='" 481 + isExternallyOwned 482 + '\'' 483 + ", " 484 + "hasCollaborations='" 485 + hasCollaborations 486 + '\'' 487 + ", " 488 + "metadata='" 489 + metadata 490 + '\'' 491 + ", " 492 + "expiresAt='" 493 + expiresAt 494 + '\'' 495 + ", " 496 + "representations='" 497 + representations 498 + '\'' 499 + ", " 500 + "classification='" 501 + classification 502 + '\'' 503 + ", " 504 + "uploaderDisplayName='" 505 + uploaderDisplayName 506 + '\'' 507 + ", " 508 + "dispositionAt='" 509 + dispositionAt 510 + '\'' 511 + ", " 512 + "sharedLinkPermissionOptions='" 513 + sharedLinkPermissionOptions 514 + '\'' 515 + ", " 516 + "isAssociatedWithAppItem='" 517 + isAssociatedWithAppItem 518 + '\'' 519 + "}"; 520 } 521 522 public static class Builder extends File.Builder { 523 524 protected String versionNumber; 525 526 protected Long commentCount; 527 528 protected FileFullPermissionsField permissions; 529 530 protected List<String> tags; 531 532 protected FileFullLockField lock; 533 534 protected String extension; 535 536 protected Boolean isPackage; 537 538 protected FileFullExpiringEmbedLinkField expiringEmbedLink; 539 540 protected FileFullWatermarkInfoField watermarkInfo; 541 542 protected Boolean isAccessibleViaSharedLink; 543 544 protected List<EnumWrapper<FileFullAllowedInviteeRolesField>> allowedInviteeRoles; 545 546 protected Boolean isExternallyOwned; 547 548 protected Boolean hasCollaborations; 549 550 protected FileFullMetadataField metadata; 551 552 protected OffsetDateTime expiresAt; 553 554 protected FileFullRepresentationsField representations; 555 556 protected FileFullClassificationField classification; 557 558 protected String uploaderDisplayName; 559 560 protected OffsetDateTime dispositionAt; 561 562 protected List<EnumWrapper<FileFullSharedLinkPermissionOptionsField>> 563 sharedLinkPermissionOptions; 564 565 protected Boolean isAssociatedWithAppItem; 566 567 public Builder(String id) { 568 super(id); 569 } 570 571 public Builder versionNumber(String versionNumber) { 572 this.versionNumber = versionNumber; 573 return this; 574 } 575 576 public Builder commentCount(Long commentCount) { 577 this.commentCount = commentCount; 578 return this; 579 } 580 581 public Builder permissions(FileFullPermissionsField permissions) { 582 this.permissions = permissions; 583 return this; 584 } 585 586 public Builder tags(List<String> tags) { 587 this.tags = tags; 588 return this; 589 } 590 591 public Builder lock(FileFullLockField lock) { 592 this.lock = lock; 593 this.markNullableFieldAsSet("lock"); 594 return this; 595 } 596 597 public Builder extension(String extension) { 598 this.extension = extension; 599 return this; 600 } 601 602 public Builder isPackage(Boolean isPackage) { 603 this.isPackage = isPackage; 604 return this; 605 } 606 607 public Builder expiringEmbedLink(FileFullExpiringEmbedLinkField expiringEmbedLink) { 608 this.expiringEmbedLink = expiringEmbedLink; 609 return this; 610 } 611 612 public Builder watermarkInfo(FileFullWatermarkInfoField watermarkInfo) { 613 this.watermarkInfo = watermarkInfo; 614 return this; 615 } 616 617 public Builder isAccessibleViaSharedLink(Boolean isAccessibleViaSharedLink) { 618 this.isAccessibleViaSharedLink = isAccessibleViaSharedLink; 619 return this; 620 } 621 622 public Builder allowedInviteeRoles(List<? extends Valuable> allowedInviteeRoles) { 623 this.allowedInviteeRoles = 624 EnumWrapper.wrapValuableEnumList( 625 allowedInviteeRoles, FileFullAllowedInviteeRolesField.class); 626 return this; 627 } 628 629 public Builder isExternallyOwned(Boolean isExternallyOwned) { 630 this.isExternallyOwned = isExternallyOwned; 631 return this; 632 } 633 634 public Builder hasCollaborations(Boolean hasCollaborations) { 635 this.hasCollaborations = hasCollaborations; 636 return this; 637 } 638 639 public Builder metadata(FileFullMetadataField metadata) { 640 this.metadata = metadata; 641 return this; 642 } 643 644 public Builder expiresAt(OffsetDateTime expiresAt) { 645 this.expiresAt = expiresAt; 646 this.markNullableFieldAsSet("expires_at"); 647 return this; 648 } 649 650 public Builder representations(FileFullRepresentationsField representations) { 651 this.representations = representations; 652 return this; 653 } 654 655 public Builder classification(FileFullClassificationField classification) { 656 this.classification = classification; 657 return this; 658 } 659 660 public Builder uploaderDisplayName(String uploaderDisplayName) { 661 this.uploaderDisplayName = uploaderDisplayName; 662 return this; 663 } 664 665 public Builder dispositionAt(OffsetDateTime dispositionAt) { 666 this.dispositionAt = dispositionAt; 667 this.markNullableFieldAsSet("disposition_at"); 668 return this; 669 } 670 671 public Builder sharedLinkPermissionOptions( 672 List<? extends Valuable> sharedLinkPermissionOptions) { 673 this.sharedLinkPermissionOptions = 674 EnumWrapper.wrapValuableEnumList( 675 sharedLinkPermissionOptions, FileFullSharedLinkPermissionOptionsField.class); 676 this.markNullableFieldAsSet("shared_link_permission_options"); 677 return this; 678 } 679 680 public Builder isAssociatedWithAppItem(Boolean isAssociatedWithAppItem) { 681 this.isAssociatedWithAppItem = isAssociatedWithAppItem; 682 return this; 683 } 684 685 @Override 686 public Builder etag(String etag) { 687 this.etag = etag; 688 this.markNullableFieldAsSet("etag"); 689 return this; 690 } 691 692 @Override 693 public Builder type(FileBaseTypeField type) { 694 this.type = new EnumWrapper<FileBaseTypeField>(type); 695 return this; 696 } 697 698 @Override 699 public Builder type(EnumWrapper<FileBaseTypeField> type) { 700 this.type = type; 701 return this; 702 } 703 704 @Override 705 public Builder sequenceId(String sequenceId) { 706 this.sequenceId = sequenceId; 707 return this; 708 } 709 710 @Override 711 public Builder name(String name) { 712 this.name = name; 713 return this; 714 } 715 716 @Override 717 public Builder sha1(String sha1) { 718 this.sha1 = sha1; 719 return this; 720 } 721 722 @Override 723 public Builder fileVersion(FileVersionMini fileVersion) { 724 this.fileVersion = fileVersion; 725 return this; 726 } 727 728 @Override 729 public Builder description(String description) { 730 this.description = description; 731 return this; 732 } 733 734 @Override 735 public Builder size(Long size) { 736 this.size = size; 737 return this; 738 } 739 740 @Override 741 public Builder pathCollection(FilePathCollectionField pathCollection) { 742 this.pathCollection = pathCollection; 743 return this; 744 } 745 746 @Override 747 public Builder createdAt(OffsetDateTime createdAt) { 748 this.createdAt = createdAt; 749 return this; 750 } 751 752 @Override 753 public Builder modifiedAt(OffsetDateTime modifiedAt) { 754 this.modifiedAt = modifiedAt; 755 return this; 756 } 757 758 @Override 759 public Builder trashedAt(OffsetDateTime trashedAt) { 760 this.trashedAt = trashedAt; 761 this.markNullableFieldAsSet("trashed_at"); 762 return this; 763 } 764 765 @Override 766 public Builder purgedAt(OffsetDateTime purgedAt) { 767 this.purgedAt = purgedAt; 768 this.markNullableFieldAsSet("purged_at"); 769 return this; 770 } 771 772 @Override 773 public Builder contentCreatedAt(OffsetDateTime contentCreatedAt) { 774 this.contentCreatedAt = contentCreatedAt; 775 this.markNullableFieldAsSet("content_created_at"); 776 return this; 777 } 778 779 @Override 780 public Builder contentModifiedAt(OffsetDateTime contentModifiedAt) { 781 this.contentModifiedAt = contentModifiedAt; 782 this.markNullableFieldAsSet("content_modified_at"); 783 return this; 784 } 785 786 @Override 787 public Builder createdBy(UserMini createdBy) { 788 this.createdBy = createdBy; 789 return this; 790 } 791 792 @Override 793 public Builder modifiedBy(UserMini modifiedBy) { 794 this.modifiedBy = modifiedBy; 795 return this; 796 } 797 798 @Override 799 public Builder ownedBy(UserMini ownedBy) { 800 this.ownedBy = ownedBy; 801 return this; 802 } 803 804 @Override 805 public Builder sharedLink(FileSharedLinkField sharedLink) { 806 this.sharedLink = sharedLink; 807 return this; 808 } 809 810 @Override 811 public Builder parent(FolderMini parent) { 812 this.parent = parent; 813 this.markNullableFieldAsSet("parent"); 814 return this; 815 } 816 817 @Override 818 public Builder itemStatus(FileItemStatusField itemStatus) { 819 this.itemStatus = new EnumWrapper<FileItemStatusField>(itemStatus); 820 return this; 821 } 822 823 @Override 824 public Builder itemStatus(EnumWrapper<FileItemStatusField> itemStatus) { 825 this.itemStatus = itemStatus; 826 return this; 827 } 828 829 public FileFull build() { 830 if (this.type == null) { 831 this.type = new EnumWrapper<FileBaseTypeField>(FileBaseTypeField.FILE); 832 } 833 return new FileFull(this); 834 } 835 } 836 837 public static class AllowedInviteeRolesDeserializer 838 extends JsonDeserializer<List<EnumWrapper<FileFullAllowedInviteeRolesField>>> { 839 840 public final JsonDeserializer<EnumWrapper<FileFullAllowedInviteeRolesField>> 841 elementDeserializer; 842 843 public AllowedInviteeRolesDeserializer() { 844 super(); 845 this.elementDeserializer = 846 new FileFullAllowedInviteeRolesField.FileFullAllowedInviteeRolesFieldDeserializer(); 847 } 848 849 @Override 850 public List<EnumWrapper<FileFullAllowedInviteeRolesField>> deserialize( 851 JsonParser p, DeserializationContext ctxt) throws IOException { 852 JsonNode node = p.getCodec().readTree(p); 853 List<EnumWrapper<FileFullAllowedInviteeRolesField>> elements = new ArrayList<>(); 854 for (JsonNode item : node) { 855 JsonParser pa = item.traverse(p.getCodec()); 856 pa.nextToken(); 857 elements.add(elementDeserializer.deserialize(pa, ctxt)); 858 } 859 return elements; 860 } 861 } 862 863 public static class AllowedInviteeRolesSerializer 864 extends JsonSerializer<List<EnumWrapper<FileFullAllowedInviteeRolesField>>> { 865 866 public final JsonSerializer<EnumWrapper<FileFullAllowedInviteeRolesField>> elementSerializer; 867 868 public AllowedInviteeRolesSerializer() { 869 super(); 870 this.elementSerializer = 871 new FileFullAllowedInviteeRolesField.FileFullAllowedInviteeRolesFieldSerializer(); 872 } 873 874 @Override 875 public void serialize( 876 List<EnumWrapper<FileFullAllowedInviteeRolesField>> value, 877 JsonGenerator gen, 878 SerializerProvider serializers) 879 throws IOException { 880 gen.writeStartArray(); 881 for (EnumWrapper<FileFullAllowedInviteeRolesField> item : value) { 882 elementSerializer.serialize(item, gen, serializers); 883 } 884 gen.writeEndArray(); 885 } 886 } 887 888 public static class SharedLinkPermissionOptionsDeserializer 889 extends JsonDeserializer<List<EnumWrapper<FileFullSharedLinkPermissionOptionsField>>> { 890 891 public final JsonDeserializer<EnumWrapper<FileFullSharedLinkPermissionOptionsField>> 892 elementDeserializer; 893 894 public SharedLinkPermissionOptionsDeserializer() { 895 super(); 896 this.elementDeserializer = 897 new FileFullSharedLinkPermissionOptionsField 898 .FileFullSharedLinkPermissionOptionsFieldDeserializer(); 899 } 900 901 @Override 902 public List<EnumWrapper<FileFullSharedLinkPermissionOptionsField>> deserialize( 903 JsonParser p, DeserializationContext ctxt) throws IOException { 904 JsonNode node = p.getCodec().readTree(p); 905 List<EnumWrapper<FileFullSharedLinkPermissionOptionsField>> elements = new ArrayList<>(); 906 for (JsonNode item : node) { 907 JsonParser pa = item.traverse(p.getCodec()); 908 pa.nextToken(); 909 elements.add(elementDeserializer.deserialize(pa, ctxt)); 910 } 911 return elements; 912 } 913 } 914 915 public static class SharedLinkPermissionOptionsSerializer 916 extends JsonSerializer<List<EnumWrapper<FileFullSharedLinkPermissionOptionsField>>> { 917 918 public final JsonSerializer<EnumWrapper<FileFullSharedLinkPermissionOptionsField>> 919 elementSerializer; 920 921 public SharedLinkPermissionOptionsSerializer() { 922 super(); 923 this.elementSerializer = 924 new FileFullSharedLinkPermissionOptionsField 925 .FileFullSharedLinkPermissionOptionsFieldSerializer(); 926 } 927 928 @Override 929 public void serialize( 930 List<EnumWrapper<FileFullSharedLinkPermissionOptionsField>> value, 931 JsonGenerator gen, 932 SerializerProvider serializers) 933 throws IOException { 934 gen.writeStartArray(); 935 for (EnumWrapper<FileFullSharedLinkPermissionOptionsField> item : value) { 936 elementSerializer.serialize(item, gen, serializers); 937 } 938 gen.writeEndArray(); 939 } 940 } 941}