Skip to content

Releases: box/box-java-sdk

v2.0.0

07 Jan 21:48
Compare
Choose a tag to compare

This major release contains critical bug fixes for the events API as well as new support for App User authentication.

Breaking Changes:

  • EventLog stream position is now a string. The events API introduced a breaking change which modified the type of the streamPosition field from a number to a string. Any code that uses the EventLog class will need to be updated.

New Features:

  • Support for App Users. The new App Users authentication process is now supported by the SDK. Examples for how to use App Users can be found in the src/example directory and additional documentation can be found in the API docs.
  • Support for transferring folders between users. The BoxUser.moveFolderToUser(String) method lets a user's root folder me transferred to another user.
  • Support for tasks. The tasks API is now supported, allowing for tasks to be created, modified, and assigned.
  • File preview links. The BoxFile.getPreviewLink() can be used to retrieve a temporary link which allows users to preview a file's contents.

Bug Fixes:

  • EventLog properly maintains event ordering. Previously, the events in an EventLog were not guaranteed to be in the same order as returned by the API.
  • Fix exception when retrieving enterprise events. A StringIndexOutOfBoundsException would be thrown by EventLog.getEnterpriseEvents when the position parameter was non-zero and types parameter was an empty array.

Thanks to @mcmilwj, @jonjo-manywho, @danielandefors, and @itsmanishagarwal for their contributions to this release!

v1.1.0

14 Jul 01:59
Compare
Choose a tag to compare

This release introduces some new features around proxy configuration and improved event API support.

New Features:

  • Set a non-global proxy. New methods added to BoxAPIConnection allow for a non-global proxy to be set when making requests to the Box API. Basic HTTP authorization is also now support for proxies.
  • Improved events API support. The "created_at", "created_by", and "session_id" fields have been added to BoxEvent. Support was also added for some undocumented enterprise event fields.
  • Preflight checks. The methods canUpload() and canUploadVersion() can be used to perform a preflight check. This check helps ensure that a file can be uploaded before attempting to transfer all of its contents.

Bug Fixes:

  • gzip encoded error messages are correctly handled. Previously, the bodies of error responses weren't decoded properly when gzipped.
  • Groups are properly parsed when creating and retrieving collaborations. The "accessible_by" field of some collaborations was incorrectly parsed as a BoxUser instead of a BoxGroup.
  • Fix intermittent OAuth refresh failures. Sometimes OAuth refresh would fail when performing a large number of sequential requests. This was particularly noticeable when long-polling a large number of events from the events API.

There is a known issue where calling stop() on the EventStream class won't immediately cancel the current long-polling request until it times out (usually after 10 minutes). This can be problematic in situations where a refresh needs to occur, since the current access token will remain locked (and unable to refresh) until the request times out.

v1.0.0

15 Apr 19:02
Compare
Choose a tag to compare

This is the first API-stable release of the SDK. There won't be any further breaking API changes until the next major version.

New Features:

  • Save and restore API connections. Saving and restoring API connections is now much easier and more reliable. BoxAPIConnection can be saved to a state string, which can then be persisted and restored at a later time.
  • Support for group memberships. Users can be added and removed from groups, as well as have their group role changed.
  • Edit user information. Users can update their own profile information including their email aliases.
  • Manage enterprise users. Enterprise admins can create, delete, and update user accounts associated with their enterprise.
  • Enterprise event log support. Enterprises can retrieve admin logs which contain events that have occurred within their enterprise.

Bug Fixes:

  • Fix crash when iterating over a groups. A NullPointerException could be thrown when iterating using BoxGroupIterator.
  • Path collections now contain folder information. Previously, getPathCollection() would return a list of BoxFolders instead of a list of BoxFolder.Info.
  • Fix issue with failed requests breaking connection pooling. Connection resources are now properly cleaned up when an error occurs during a request.

v0.7.0

17 Feb 23:10
Compare
Choose a tag to compare
v0.7.0 Pre-release
Pre-release

This is a relatively minor release that adds support for Java 6. The only breaking change in this release is a new method that was added to the EventListener interface which allows listeners to be notified of changes in the event stream's position.

v0.6.0

06 Feb 02:54
Compare
Choose a tag to compare
v0.6.0 Pre-release
Pre-release

This release introduces support for the Box metadata API as well as some major performance improvements. Features include:

  • Metadata. You can now manipulate metadata properties associated with a BoxFile. Metadata allows your application to define and store custom data associated with files. For more information on Box metadata, see the documentation.
  • Shared item support. You can now retrieve items using their shared link. The SDK automatically handles shared link authentication, making it easy to access shared items and their children.
  • Request interceptors. Requests can be intercepted before they're sent to the API, allowing for applications to modify requests or prevent them from being sent entirely.
  • Performance improvements to persistent connections. HTTP keep-alive now works much more consistently, giving a massive performance boost to applications that send a large number of requests.
  • OAuth is now thread safe. OAuth refresh logic is now thread-safe, making authentication more reliable in multithreaded applications.
  • Support for OAuth refresh listeners. BoxAPIConnection now supports listeners that will be notified whenever an OAuth refresh happens. This makes it easier for applications to save authentication information for persistent logins.

Major bug fixes for this release include:

  • Fix restoring API connections from access and refresh tokens. A bug was fixed where restoring an API connection using saved access and refresh tokens would cause a token refresh error.
  • Fix crash when receiving a large number of duplicate events. When a large number of duplicate events was received, an exception would be thrown. This was caused by the EventStream's LRU not removing items correctly.
  • Fix bug when sending non-ASCII characters. The content length of requests with non-ASCII characters was being calculated incorrectly.

v0.5.0

09 Dec 01:53
Compare
Choose a tag to compare
v0.5.0 Pre-release
Pre-release

This release marks the beginning of the public beta for the SDK. It comes along with a new site that has documentation as well as coordinates for using the SDK with maven. There are also a bunch of new features which include:

  • Range downloading. Downloading files now supports byte ranges, allowing only portions of a file to be downloaded.
  • Basic searching. Folders can be recursively searched with an arbitrary query. Advanced search queries will be supported in a future release.
  • Support for groups. Groups can be created, deleted, and updated as well as used in collaborations.
  • Support for comments. In addition to being edited or deleted, comments can be added to files or added as a reply to other comments.
  • Support for trash. Add support for accessing items in the trash or restoring them to their original locations.
  • Fields can be specified when iterating over a folder's items. Fields can now be specified with a new getChildren(String...) method.
  • Retrieve range of child items. A specific range of children can be retrieved from folders, similar to how the API allows an offset and limit to be specified.
  • Complete javadoc documentation. Javadocs are complete and can be found on the SDK's site.

In addition to new features, there are also the following bug fixes:

  • Fix ProgressListeners for compressed downloads. Compressed gzipped downloads now have their progress reported correctly.
  • Fix potential infinite loop when iterating over folder items. The offset when paging through a folder's items wasn't correctly incremented.
  • Fix bug with createdAt and modifiedAt timestamps with file uploads. Timestamps where being formatted incorrectly when uploading a new file.

v0.4.0

27 Oct 06:49
Compare
Choose a tag to compare
v0.4.0 Pre-release
Pre-release

This is the first beta release of the SDK. It contains all the changes since v0.1 along with a few improvements around JSON handling and a new sample project.

Changes:

  • Shared links for folders. Shared links for folders can be created in the same way they are for files.
  • Sample project. A sample project can be found in src/example/java/com/box/sdk/example/Main.java that demonstrates the basics of how to use the SDK.
  • Improved handling of JSON updates. JSON update handling has been improved to support nested JSON objects.
  • Increased documentation.

v0.3.0

27 Oct 20:56
Compare
Choose a tag to compare
v0.3.0 Pre-release
Pre-release

This release adds support for additional API endpoints and continues to add more documentation.

  • Shared links for files. Shared links can be created and modified for files.
  • Collaborations endpoint. Collaborations can be created, retrieved, updated and removed.
  • Add ProgressListener support for requests and responses. The progress of BoxAPIRequests and BoxAPIResponses can be monitored by providing a ProgressListener.
  • Generic types were removed from Info classes. This makes working with resource info objects easier and less cumbersome.
  • Javadoc and guide improvements. Add more documentation for existing classes without javadocs.

v0.2.0

27 Oct 20:55
Compare
Choose a tag to compare
v0.2.0 Pre-release
Pre-release

This release focused on increasing testability, adding documentation and completing the files and folders endpoints.

Changes:

  • ProgressListeners for downloads. ProgressListeners can be provided in order to monitor the progress of long-running downloads.
  • Custom fields support. Custom fields can be provided when getting info about a file or folder.
  • New Javadoc documentation and guides. The Javadocs for the SDK can now be found on GitHub along with some styling improvements. There are also some new guides on getting started with the SDK.
  • Complete file and folder endpoints. Most operations related to files and folders are now complete. There are still a few other methods (such as getting comments and tasks) which will be implemented when their dependent resource types are implemented.
  • Increased test coverage. Added test coverage reports, full logging for all API requests and responses and fixed some bugs discovered by the new tests.

v0.1.0

27 Oct 20:55
Compare
Choose a tag to compare
v0.1.0 Pre-release
Pre-release

First prerelease of the next iteration of the Java SDK.

Changes:

  • OAuth redesign. OAuth should now be easier to use, allowing you to authenticate with an access token, auth code, or developer token.
  • Automatic rate-limiting and error retry. API requests will automatically be retried with exponential back off if a 500+ (server error) or 429 (too many requests) response code is returned.
  • New EventStream class. This class makes it easier to listen for API events by allowing you to specify listeners that will be notified when an event occurs.
  • New classes for resource types. Managers have been removed in favor of using resource type classes directly. This should make the SDK simpler and more intuitive to use.
  • New classes for making custom API requests. The BoxAPIRequest and BoxAPIResponse classes make it easy to send custom requests to the API while still having OAuth, rate-limiting back off, error handling and response parsing automatically handled.
  • Test suites for running unit and integration tests. Test accounts can be used to run integration tests against the API.