diff --git a/client/src/main/java/cloud/prefab/client/config/Match.java b/client/src/main/java/cloud/prefab/client/config/Match.java index 1f1177c..563585b 100644 --- a/client/src/main/java/cloud/prefab/client/config/Match.java +++ b/client/src/main/java/cloud/prefab/client/config/Match.java @@ -13,6 +13,7 @@ public class Match { private final int rowIndex; private final int conditionalValueIndex; private final Optional weightedValueIndex; + private final Optional envId; public Match( Prefab.ConfigValue configValue, @@ -20,7 +21,8 @@ public Match( List evaluatedCriterion, int rowIndex, int conditionalValueIndex, - Optional weightedValueIndex + Optional weightedValueIndex, + Optional envId ) { this.configValue = configValue; this.configElement = configElement; @@ -28,6 +30,7 @@ public Match( this.rowIndex = rowIndex; this.conditionalValueIndex = conditionalValueIndex; this.weightedValueIndex = weightedValueIndex; + this.envId = envId; } public int getRowIndex() { @@ -42,6 +45,10 @@ public Optional getWeightedValueIndex() { return weightedValueIndex; } + public Optional getEnvId() { + return envId; + } + public Prefab.ConfigValue getConfigValue() { return configValue; } @@ -74,6 +81,7 @@ public String toString() { .add("rowIndex", rowIndex) .add("conditionalValueIndex", conditionalValueIndex) .add("weightedValueIndex", weightedValueIndex) + .add("envId", envId) .toString(); } } diff --git a/client/src/main/java/cloud/prefab/client/internal/ConfigResolver.java b/client/src/main/java/cloud/prefab/client/internal/ConfigResolver.java index 3400c28..aff2ab1 100644 --- a/client/src/main/java/cloud/prefab/client/internal/ConfigResolver.java +++ b/client/src/main/java/cloud/prefab/client/internal/ConfigResolver.java @@ -89,7 +89,8 @@ private Match reify(Match match, LookupContext lookupContext) { match.getEvaluatedCriterion(), match.getRowIndex(), match.getConditionalValueIndex(), - match.getWeightedValueIndex() + match.getWeightedValueIndex(), + match.getEnvId() ); } diff --git a/client/src/main/java/cloud/prefab/client/internal/ConfigRuleEvaluator.java b/client/src/main/java/cloud/prefab/client/internal/ConfigRuleEvaluator.java index 6c5c7c2..3464517 100644 --- a/client/src/main/java/cloud/prefab/client/internal/ConfigRuleEvaluator.java +++ b/client/src/main/java/cloud/prefab/client/internal/ConfigRuleEvaluator.java @@ -114,7 +114,8 @@ private Optional getMatch( conditionalValueIndex, lookupContext, rowPropertiesStack, - configElement + configElement, + configRow ); if (optionalMatch.isPresent()) { @@ -146,7 +147,8 @@ private Optional evaluateConditionalValue( int conditionalValueIndex, LookupContext lookupContext, Deque> rowProperties, - ConfigElement configElement + ConfigElement configElement, + Prefab.ConfigRow configRow ) { List evaluatedCriteria = new ArrayList<>(); for (Prefab.Criterion criterion : conditionalValue.getCriteriaList()) { @@ -168,7 +170,8 @@ private Optional evaluateConditionalValue( conditionalValueIndex, configElement, lookupContext, - evaluatedCriteria + evaluatedCriteria, + configRow ) ); } @@ -182,8 +185,13 @@ private Match simplifyToMatch( int conditionalValueIndex, ConfigElement configElement, LookupContext lookupContext, - List evaluatedCriteria + List evaluatedCriteria, + Prefab.ConfigRow configRow ) { + Optional envId = configRow.hasProjectEnvId() + ? Optional.of(configRow.getProjectEnvId()) + : Optional.empty(); + if (selectedConditionalValue.getValue().hasWeightedValues()) { WeightedValueEvaluator.Result result = weightedValueEvaluator.toResult( selectedConditionalValue.getValue().getWeightedValues(), @@ -196,7 +204,8 @@ private Match simplifyToMatch( evaluatedCriteria, (int) rowIndex, conditionalValueIndex, - Optional.of(result.getIndex()) + Optional.of(result.getIndex()), + envId ); } else { return new Match( @@ -205,7 +214,8 @@ private Match simplifyToMatch( evaluatedCriteria, (int) rowIndex, conditionalValueIndex, - Optional.empty() + Optional.empty(), + envId ); } } diff --git a/client/src/test/java/cloud/prefab/client/internal/ConfigResolverTest.java b/client/src/test/java/cloud/prefab/client/internal/ConfigResolverTest.java index 6e66b27..7905efe 100644 --- a/client/src/test/java/cloud/prefab/client/internal/ConfigResolverTest.java +++ b/client/src/test/java/cloud/prefab/client/internal/ConfigResolverTest.java @@ -241,6 +241,7 @@ Match match(Prefab.ConfigValue configValue, Prefab.Config config) { Collections.emptyList(), 0, 0, + Optional.empty(), Optional.empty() ); } diff --git a/client/src/test/java/cloud/prefab/client/internal/MatchStatsAggregatorTest.java b/client/src/test/java/cloud/prefab/client/internal/MatchStatsAggregatorTest.java index 5264681..05602f8 100644 --- a/client/src/test/java/cloud/prefab/client/internal/MatchStatsAggregatorTest.java +++ b/client/src/test/java/cloud/prefab/client/internal/MatchStatsAggregatorTest.java @@ -69,6 +69,7 @@ void itAggregates() { Collections.emptyList(), 0, 2, + Optional.empty(), Optional.empty() ), 101 @@ -81,6 +82,7 @@ void itAggregates() { Collections.emptyList(), 0, 2, + Optional.empty(), Optional.empty() ), 102 @@ -93,6 +95,7 @@ void itAggregates() { Collections.emptyList(), 0, 2, + Optional.empty(), Optional.empty() ), 102 @@ -108,6 +111,7 @@ void itAggregates() { Collections.emptyList(), 0, 3, + Optional.empty(), Optional.empty() ), 107 diff --git a/client/src/test/java/cloud/prefab/client/internal/TelemetryManagerTest.java b/client/src/test/java/cloud/prefab/client/internal/TelemetryManagerTest.java index 6d9da6f..d061c43 100644 --- a/client/src/test/java/cloud/prefab/client/internal/TelemetryManagerTest.java +++ b/client/src/test/java/cloud/prefab/client/internal/TelemetryManagerTest.java @@ -415,6 +415,7 @@ private static void reportSomeMatches(TelemetryManager telemetryManager) { Collections.emptyList(), 1, 2, + Optional.empty(), Optional.empty() ), new LookupContext( @@ -436,6 +437,7 @@ private static void reportSomeMatches(TelemetryManager telemetryManager) { Collections.emptyList(), 1, 2, + Optional.empty(), Optional.empty() ), new LookupContext( @@ -457,6 +459,7 @@ private static void reportSomeMatches(TelemetryManager telemetryManager) { Collections.emptyList(), 1, 2, + Optional.empty(), Optional.empty() ), new LookupContext( @@ -475,6 +478,7 @@ private static void reportSomeMatches(TelemetryManager telemetryManager) { Collections.emptyList(), 0, 0, + Optional.empty(), Optional.empty() ), new LookupContext( @@ -493,6 +497,7 @@ private static void reportSomeMatches(TelemetryManager telemetryManager) { Collections.emptyList(), 0, 0, + Optional.empty(), Optional.empty() ), new LookupContext(