Releases: box/box-java-sdk
v1.1.0
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()
andcanUploadVersion()
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 aBoxGroup
. - 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
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 usingBoxGroupIterator
. - Path collections now contain folder information. Previously,
getPathCollection()
would return a list ofBoxFolders
instead of a list ofBoxFolder.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
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
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
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
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
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
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
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.