CloudBees Feature Management - Java server changelog

CloudBees Feature Management is an advanced feature flagging solution that lets your development teams quickly build and deploy applications without compromising on safety. By providing a gradual release mechanism and a simple way to define target audiences, CloudBees Feature Management allows developers and product managers to optimize feature releases and customize the user experience. CloudBees Feature Management gives teams control over features that are in staging, production, or any environment in the deployment pipeline.

2021-07-19: V5.0.4

  • Fixed push notification bug

  • Adding EU hosting support

2021-06-03: V5.0.2

  • Fixed embedded configuration

2021-04-01: V5.0.1

  • Few internal bug fixes.

2021-03-28: V5.0.0

Breaking changes:

  • RoxVariant changed to RoxString

    • new RoxVariant("defaultStr", new String[] {"str1", "str2"})new RoxString("defaultStr", new String[] {"str1", "str2"}).

  • RoxEnumVariant renamed to RoxEnum.

    • new RoxEnumVariant<>(MyEnumType.Value)new RoxEnum<>(MyEnumType.Value).

  • Functions input validations

    • Some trivial parameters (mostly type) validations were added to dynamicApi and flags constructions. For example: new RoxString(null) will raise an IllegalArgumentException as default cannot be null (default value of RoxString should be a string). Rox.dynamicApi.value(null, "defaultStr", ["str2", "str3"]) will raise an IllegalArgumentException because of null flag name (name should always be a string).

Fixes and Additions:

  • Can use register without a namespace:

    • register(container) will register the container under an empty string namespace (multiple register calls with the same namespaces are still not allowed!).

  • Added a User Space Error handling

    • It is recommended to wrap all handlers used in Rox platform (all CustomPropertyGenerator.generateProperty, ImpressionHandler.onImpression, ConfigurationFetchedHandler.onConfigurationFetched, DynamicPropertyRule.invoke) with try-catch in order to be in the right context. In case there will be an uncaught error, it will reach the Rox.setUserspaceUnhandledErrorHandler handler. You can use this handler for debugging, or for further error handling. A Throwable thrown within this handler will be written to log. If no setUserspaceUnhandledErrorHandler was set, errors will be written to the log.

  • Analytics / impressions

    • Starting with SDK 5, flags will always send impressions after setup (not only when targeting is enabled on the dashboard).

  • Impression handler parameters change

    • As experiments were removed, impressions handler signature was changed from (reportingValue, experiment, context) to (ImpressionEvent event). Besides name, value, and context properties, event also provides targeting (boolean) property, indicating the flag was evaluated by using the dashboard configurations.

  • New Flag Types Int/Double

    • In addition to RoxFlag and RoxString, we also added RoxInt and RoxDouble

    • DynamicApi was also updated with matching getInt and getDouble methods.

  • Added a graceful Rox.shutdown

    • In order to clean all background tasks.

    • multiple Rox.setup calls will be ignored if Rox wasn’t shutdown in between.

  • Added RoxOptions.Builder.withDynamicPropertyRule.

  • Remote configurations were eliminated, please use flags instead:

    • new RoxConfigurationString ⇒ new RoxString

    • new RoxConfigurationInt ⇒ new RoxInt

    • new RoxConfigurationDouble ⇒ new RoxDouble

    • new RoxConfigurationBool ⇒ new RoxFlag

2020-04-30: V4.9.1

  • Self-managed support added

2019-09-16: V4.8.0

  • API version 1.8.0

  • Values are base64 - fixing " and () bug

  • Changes to API calls, using Cloudfront

2019-06-12: V4.6.4

  • Fixed Concat bug

  • Adding Kill switch to remotely shut down the SDK

2019-01-17: V4.6.0

  • Non-public fields are also registered inside the container (for Scala compatibility)

  • Rox.reset() function was added (See Java API - reset for documentation)

2018-11-28: V4.3.0

  • Added push updates support

2018-11-08: V4.2.0

  • internal changes

2018-10-18: V4.1.1

  • Rox.setup returns a Future<Void>

2018-08-20: V4.1.0

  • Encrypted in operator - you can now use in operator and the data will be passed to the clients encrypted

  • API version 1.7.0

2018-06-18: V3.2.0

  • Overrides API - override your flags value locally

  • Roxy Support - Use the Roxy server as your ROX configuration endpoint

2018-05-31: V3.1.0

  • Dynamic API - getting a flag value by it’s name

2018-05-09: V3.0.0

  • flag dependency support

  • add isArchive to flag impression handler

  • fixed error in failed debug log messages

2018-04-15: V2.0.3

  • Fixed leak in s3 access

2018-04-12: V2.0.2

  • Fixed leak in s3 access

2018-01-03: V2.0.0

  • General Availability !!!!

  • Added impression Handler on RoxOptions - allowing to hook custom action (e.g. analytic reporting) when a flag value is evaluated

  • Added withSyncCompletionHandler on RoxOptions - get an update once configuration is processes on the device

  • Namespace is moved to register - instead of registering the container and placing the namespace inside the container object we move the container to the register function