Skip to content

Override toString() in Info classes to encode them back to JSON #52

Description

@gcurtis

Calling toString() on an Info object should return the full JSON representation of the object, including any changes made locally.

This feature makes it easier for applications to cache and store data returned from the API.

Activity

  1. added this to the Basics milestone on Jun 21, 2016
  2. PreciselyAlyss commented on May 21, 2019

    @PreciselyAlyss
    Contributor

    Appears to have been added by PR#461

  3. added 2 commits that reference this issue on Aug 12, 2020
    84f9d90
    a25be0c
  4. antusus commented on Jan 25, 2022

    @antusus
    Contributor

    I do not think that toString method should return Json object representation with all the changes. This method is used mostly for debugging/logging so it should be fast . What is required here does not look like it fits into toString specification.

    All Info objects have to methods:

    • com.box.sdk.BoxJSONObject#getPendingChanges - that returns String representation of the Json with all the pending changes
    • com.box.sdk.BoxJSONObject#getPendingChangesAsJsonObject - that returns JsonObject with all the pending changes
      However those will return null if there are no pending changes.
      If we create a new method to return Json representation of current state of the Info object (as String or JsonObject) to cache it what would be the use case?
      Some application gets the response from SDK, modifies it, gets Json and cache it but what then? If it would get the object from cache and create the Info object from it the information on pending changes are lost.
      The best approach is to use com.box.sdk.BoxJSONObject#getJson which is exposed to all Info objects. If you use this Json representation to cache response and the use it to create Info object you are not loosing any information. But you have any pending changes you have to sent them via SDK.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementAdded to issues that describes enhancements

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions