Skip to content

Commit d892342

Browse files
authored
feat!: Context Values support, getEvaluationResult (#184)
1 parent 3e4f3e4 commit d892342

File tree

68 files changed

+2013
-1845
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+2013
-1845
lines changed

.github/workflows/run-tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212

1313
strategy:
1414
matrix:
15-
java: [ "8", "11", "17", "21" ]
15+
java: [ "11", "17", "21" ]
1616
distribution: [ "zulu", "adopt" ]
1717

1818
steps:

.gitmodules

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
[submodule "src/test/java/com/flagsmith/flagengine/enginetestdata"]
22
path = src/test/java/com/flagsmith/flagengine/enginetestdata
33
url = [email protected]:Flagsmith/engine-test-data.git
4-
branch = v1.0.0
4+
tag = v2.5.0

pom.xml

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,16 @@
3838
</scm>
3939

4040
<properties>
41+
<maven.compiler.source>11</maven.compiler.source>
42+
<maven.compiler.target>11</maven.compiler.target>
4143
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
4244
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
43-
<java.version>1.11</java.version>
45+
<java.version>11</java.version>
4446
<jacksonVersion>2.15.2</jacksonVersion>
4547
<lombok.version>1.18.34</lombok.version>
4648
<slf4j.version>1.7.30</slf4j.version>
4749
<maven.checkstyle.version>3.4.0</maven.checkstyle.version>
48-
<junit.jupiter.version>5.9.2</junit.jupiter.version>
50+
<junit.jupiter.version>5.14.0</junit.jupiter.version>
4951
</properties>
5052

5153
<dependencies>
@@ -54,6 +56,11 @@
5456
<artifactId>okhttp</artifactId>
5557
<version>4.12.0</version>
5658
</dependency>
59+
<dependency>
60+
<groupId>com.jayway.jsonpath</groupId>
61+
<artifactId>json-path</artifactId>
62+
<version>2.9.0</version>
63+
</dependency>
5764
<dependency>
5865
<groupId>com.fasterxml.jackson.core</groupId>
5966
<artifactId>jackson-annotations</artifactId>
@@ -181,6 +188,27 @@
181188
<build>
182189
<finalName>flagsmith-java-client-${project.version}</finalName>
183190
<plugins>
191+
<plugin>
192+
<groupId>org.jsonschema2pojo</groupId>
193+
<artifactId>jsonschema2pojo-maven-plugin</artifactId>
194+
<version>1.2.2</version>
195+
<executions>
196+
<execution>
197+
<goals>
198+
<goal>generate</goal>
199+
</goals>
200+
</execution>
201+
</executions>
202+
<configuration>
203+
<sourceType>jsonschema</sourceType>
204+
<sourceDirectory>${project.basedir}/src/main/resources/schema</sourceDirectory>
205+
<targetPackage>com.flagsmith.flagengine</targetPackage>
206+
<outputDirectory>${project.build.directory}/generated-sources/jsonschema2pojo</outputDirectory>
207+
<generateBuilders>true</generateBuilders>
208+
<includeConstructors>true</includeConstructors>
209+
<includeCopyConstructor>true</includeCopyConstructor>
210+
</configuration>
211+
</plugin>
184212
<plugin>
185213
<groupId>org.sonatype.central</groupId>
186214
<artifactId>central-publishing-maven-plugin</artifactId>
@@ -196,8 +224,15 @@
196224
<artifactId>maven-compiler-plugin</artifactId>
197225
<version>3.7.0</version>
198226
<configuration>
199-
<source>1.8</source>
200-
<target>1.8</target>
227+
<source>11</source>
228+
<target>11</target>
229+
<annotationProcessorPaths>
230+
<path>
231+
<groupId>org.projectlombok</groupId>
232+
<artifactId>lombok</artifactId>
233+
<version>${lombok.version}</version>
234+
</path>
235+
</annotationProcessorPaths>
201236
</configuration>
202237
</plugin>
203238
<plugin>
@@ -257,7 +292,7 @@
257292
<plugin>
258293
<groupId>org.apache.maven.plugins</groupId>
259294
<artifactId>maven-surefire-plugin</artifactId>
260-
<version>2.22.0</version>
295+
<version>3.5.4</version>
261296
</plugin>
262297
</plugins>
263298
</build>

src/main/java/com/flagsmith/FlagsmithApiWrapper.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
package com.flagsmith;
22

33
import com.fasterxml.jackson.core.type.TypeReference;
4+
import com.fasterxml.jackson.databind.JsonNode;
45
import com.fasterxml.jackson.databind.node.ObjectNode;
56
import com.flagsmith.config.FlagsmithConfig;
67
import com.flagsmith.exceptions.FlagsmithRuntimeError;
7-
import com.flagsmith.flagengine.environments.EnvironmentModel;
8-
import com.flagsmith.flagengine.features.FeatureStateModel;
9-
import com.flagsmith.flagengine.identities.traits.TraitModel;
8+
import com.flagsmith.flagengine.EvaluationContext;
109
import com.flagsmith.interfaces.FlagsmithCache;
1110
import com.flagsmith.interfaces.FlagsmithSdk;
11+
import com.flagsmith.mappers.EngineMappers;
1212
import com.flagsmith.models.Flags;
13+
import com.flagsmith.models.TraitModel;
14+
import com.flagsmith.models.environments.EnvironmentModel;
15+
import com.flagsmith.models.features.FeatureStateModel;
1316
import com.flagsmith.responses.FlagsAndTraitsResponse;
1417
import com.flagsmith.threads.AnalyticsProcessor;
1518
import com.flagsmith.threads.RequestProcessor;
@@ -20,7 +23,6 @@
2023
import java.util.concurrent.Future;
2124
import java.util.concurrent.TimeUnit;
2225
import java.util.concurrent.TimeoutException;
23-
import lombok.Data;
2426
import lombok.Getter;
2527
import okhttp3.HttpUrl;
2628
import okhttp3.MediaType;
@@ -248,19 +250,22 @@ public Flags identifyUserWithTraits(
248250
}
249251

250252
@Override
251-
public EnvironmentModel getEnvironment() {
253+
public EvaluationContext getEvaluationContext() {
252254
final Request request = newGetRequest(defaultConfig.getEnvironmentUri());
253255

254256
Future<EnvironmentModel> environmentFuture = requestor.executeAsync(request,
255257
new TypeReference<EnvironmentModel>() {},
256258
Boolean.TRUE);
257259

258260
try {
259-
return environmentFuture.get(TIMEOUT, TimeUnit.MILLISECONDS);
261+
EnvironmentModel environment = environmentFuture.get(TIMEOUT, TimeUnit.MILLISECONDS);
262+
return EngineMappers.mapEnvironmentToContext(environment);
260263
} catch (TimeoutException ie) {
261264
logger.error("Timed out on fetching Feature flags.", ie);
262265
} catch (InterruptedException ie) {
263266
logger.error("Environment loading interrupted.", ie);
267+
} catch (IllegalArgumentException iae) {
268+
logger.error("Environment loading failed.", iae);
264269
} catch (ExecutionException ee) {
265270
logger.error("Execution failed on Environment loading.", ee);
266271
throw new FlagsmithRuntimeError(ee);

0 commit comments

Comments
 (0)