Skip to content
This repository was archived by the owner on May 30, 2024. It is now read-only.

Commit b003a2d

Browse files
authored
prepare 4.3.1 release (#137)
1 parent be3a337 commit b003a2d

File tree

8 files changed

+433
-218
lines changed

8 files changed

+433
-218
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33

44
All notable changes to the LaunchDarkly Java SDK will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org).
55

6+
## [4.3.1] - 2018-09-04
7+
### Fixed:
8+
- When evaluating a prerequisite feature flag, the analytics event for the evaluation did not include the result value if the prerequisite flag was off.
9+
- The default Gson serialization for `LDUser` now includes all user properties. Previously, it omitted `privateAttributeNames`.
10+
611
## [4.3.0] - 2018-08-27
712
### Added:
813
- The new `LDClient` method `allFlagsState()` should be used instead of `allFlags()` if you are passing flag data to the front end for use with the JavaScript SDK. It preserves some flag metadata that the front end requires in order to send analytics events correctly. Versions 2.5.0 and above of the JavaScript SDK are able to use this metadata, but the output of `allFlagsState()` will still work with older versions.

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
version=4.3.0
1+
version=4.3.1
22
ossrhUsername=
33
ossrhPassword=

src/main/java/com/launchdarkly/client/FeatureFlag.java

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -74,16 +74,16 @@ EvalResult evaluate(LDUser user, FeatureStore featureStore, EventFactory eventFa
7474
return new EvalResult(EvaluationDetail.<JsonElement>error(EvaluationReason.ErrorKind.USER_NOT_SPECIFIED, null), prereqEvents);
7575
}
7676

77-
if (isOn()) {
78-
EvaluationDetail<JsonElement> details = evaluate(user, featureStore, prereqEvents, eventFactory);
79-
return new EvalResult(details, prereqEvents);
80-
}
81-
82-
return new EvalResult(getOffValue(EvaluationReason.off()), prereqEvents);
77+
EvaluationDetail<JsonElement> details = evaluate(user, featureStore, prereqEvents, eventFactory);
78+
return new EvalResult(details, prereqEvents);
8379
}
8480

8581
private EvaluationDetail<JsonElement> evaluate(LDUser user, FeatureStore featureStore, List<Event.FeatureRequest> events,
8682
EventFactory eventFactory) {
83+
if (!isOn()) {
84+
return getOffValue(EvaluationReason.off());
85+
}
86+
8787
EvaluationReason prereqFailureReason = checkPrerequisites(user, featureStore, events, eventFactory);
8888
if (prereqFailureReason != null) {
8989
return getOffValue(prereqFailureReason);
@@ -123,20 +123,16 @@ private EvaluationReason checkPrerequisites(LDUser user, FeatureStore featureSto
123123
boolean prereqOk = true;
124124
Prerequisite prereq = prerequisites.get(i);
125125
FeatureFlag prereqFeatureFlag = featureStore.get(FEATURES, prereq.getKey());
126-
EvaluationDetail<JsonElement> prereqEvalResult = null;
127126
if (prereqFeatureFlag == null) {
128127
logger.error("Could not retrieve prerequisite flag \"{}\" when evaluating \"{}\"", prereq.getKey(), key);
129128
prereqOk = false;
130-
} else if (prereqFeatureFlag.isOn()) {
131-
prereqEvalResult = prereqFeatureFlag.evaluate(user, featureStore, events, eventFactory);
132-
if (prereqEvalResult == null || prereqEvalResult.getVariationIndex() != prereq.getVariation()) {
129+
} else {
130+
EvaluationDetail<JsonElement> prereqEvalResult = prereqFeatureFlag.evaluate(user, featureStore, events, eventFactory);
131+
// Note that if the prerequisite flag is off, we don't consider it a match no matter what its
132+
// off variation was. But we still need to evaluate it in order to generate an event.
133+
if (!prereqFeatureFlag.isOn() || prereqEvalResult == null || prereqEvalResult.getVariationIndex() != prereq.getVariation()) {
133134
prereqOk = false;
134135
}
135-
} else {
136-
prereqOk = false;
137-
}
138-
// We continue to evaluate all prerequisites even if one failed.
139-
if (prereqFeatureFlag != null) {
140136
events.add(eventFactory.newPrerequisiteFeatureRequestEvent(prereqFeatureFlag, user, prereqEvalResult, this));
141137
}
142138
if (!prereqOk) {

src/main/java/com/launchdarkly/client/LDConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
*/
3030
public final class LDConfig {
3131
private static final Logger logger = LoggerFactory.getLogger(LDConfig.class);
32-
final Gson gson = new GsonBuilder().registerTypeAdapter(LDUser.class, new LDUser.UserAdapter(this)).create();
32+
final Gson gson = new GsonBuilder().registerTypeAdapter(LDUser.class, new LDUser.UserAdapterWithPrivateAttributeBehavior(this)).create();
3333

3434
private static final URI DEFAULT_BASE_URI = URI.create("https://app.launchdarkly.com");
3535
private static final URI DEFAULT_EVENTS_URI = URI.create("https://events.launchdarkly.com");

0 commit comments

Comments
 (0)