Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
14bf7cc
wip
khvn26 Sep 15, 2025
da5b62b
mapper wip
khvn26 Sep 15, 2025
f989a8c
mapper fixes
khvn26 Sep 15, 2025
05abbe9
wip + offline handlers
khvn26 Sep 15, 2025
9f25722
wip + working build
khvn26 Sep 15, 2025
8be5116
wip + fix build errors for tests
khvn26 Sep 15, 2025
59583be
test fixes
khvn26 Sep 15, 2025
c55c339
wip + fix null contextValue
khvn26 Sep 15, 2025
f72f1ff
use correct module
khvn26 Sep 15, 2025
e697b61
wip + fix segment tests
khvn26 Sep 15, 2025
4dcdaed
fix assertEquals
khvn26 Sep 15, 2025
7be7e3d
wip + fix `django_id`
khvn26 Sep 15, 2025
c4750b4
fix engine and evaluator tests
khvn26 Sep 16, 2025
15155e6
build success
khvn26 Sep 16, 2025
bf4dddf
drop Java 8 support
khvn26 Sep 16, 2025
9d4b0d8
maybe use git url
khvn26 Sep 16, 2025
afdaec0
bump submodule
khvn26 Sep 16, 2025
6a7e1c3
delete more code
khvn26 Sep 16, 2025
c742ec3
minimise formatting changes
khvn26 Sep 16, 2025
89f420a
minimise formatting changes pt. 2
khvn26 Sep 16, 2025
d4e5b1e
minimise formatting changes pt. 3
khvn26 Sep 16, 2025
d99e9d1
improve formatting, comment
khvn26 Sep 16, 2025
b861a72
minimise formatting changes pt. 4
khvn26 Sep 16, 2025
4730f9a
remove debugging code
khvn26 Sep 16, 2025
bebac37
use latest schemas and engine-test-data
khvn26 Oct 9, 2025
c3a8811
cleanup
khvn26 Oct 9, 2025
bef6681
use isEmpty
khvn26 Oct 9, 2025
b0ad7d7
improve identity override segments docs
khvn26 Oct 9, 2025
d12ef3f
improve identity overrides segments keys
khvn26 Oct 9, 2025
ec6000e
use stringListTypeRef
khvn26 Oct 9, 2025
db248dd
refactor getEvaluationResult, add priority constants
khvn26 Oct 9, 2025
c4d35e2
improve docs
khvn26 Oct 10, 2025
0e827fc
improve readability
khvn26 Oct 10, 2025
3819cd9
Support segment metadata
khvn26 Oct 15, 2025
de0362b
improve naming
khvn26 Oct 15, 2025
b8ae5ab
support variant priority
khvn26 Oct 15, 2025
7764097
prevent illegal state
khvn26 Oct 15, 2025
7303aeb
clarify context value getter behaviour
khvn26 Oct 15, 2025
c37164b
fix type casting
khvn26 Oct 15, 2025
50b4bec
fix boolean coercion
khvn26 Oct 15, 2025
b4ee7ff
add test names
khvn26 Oct 15, 2025
540832f
use latest test data
khvn26 Oct 15, 2025
60d5d9e
cleanup
khvn26 Oct 15, 2025
e7cfad5
bump maven-surefire-plugin
khvn26 Oct 15, 2025
c5821d9
bring models back
khvn26 Oct 15, 2025
711ff13
...but they don't belong to the engine anymore
khvn26 Oct 15, 2025
27b4b8e
restore IOfflineHandler
khvn26 Oct 15, 2025
000e96c
cleanup to improve diff
khvn26 Oct 16, 2025
211c5bd
support feature metadata, unset segments in context
khvn26 Oct 16, 2025
8389a90
remove extra FeatureStateModel
khvn26 Oct 16, 2025
69f00a4
support setting Flag.featureId via metadata
khvn26 Oct 16, 2025
b5889e8
fix
khvn26 Oct 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/run-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:

strategy:
matrix:
java: [ "8", "11", "17", "21" ]
java: [ "11", "17", "21" ]
distribution: [ "zulu", "adopt" ]

steps:
Expand Down
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[submodule "src/test/java/com/flagsmith/flagengine/enginetestdata"]
path = src/test/java/com/flagsmith/flagengine/enginetestdata
url = git@github.com:Flagsmith/engine-test-data.git
branch = v1.0.0
tag = v2.5.0
45 changes: 40 additions & 5 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,16 @@
</scm>

<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.11</java.version>
<java.version>11</java.version>
<jacksonVersion>2.15.2</jacksonVersion>
<lombok.version>1.18.34</lombok.version>
<slf4j.version>1.7.30</slf4j.version>
<maven.checkstyle.version>3.4.0</maven.checkstyle.version>
<junit.jupiter.version>5.9.2</junit.jupiter.version>
<junit.jupiter.version>5.14.0</junit.jupiter.version>
</properties>

<dependencies>
Expand All @@ -54,6 +56,11 @@
<artifactId>okhttp</artifactId>
<version>4.12.0</version>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
Expand Down Expand Up @@ -181,6 +188,27 @@
<build>
<finalName>flagsmith-java-client-${project.version}</finalName>
<plugins>
<plugin>
<groupId>org.jsonschema2pojo</groupId>
<artifactId>jsonschema2pojo-maven-plugin</artifactId>
<version>1.2.2</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<sourceType>jsonschema</sourceType>
<sourceDirectory>${project.basedir}/src/main/resources/schema</sourceDirectory>
<targetPackage>com.flagsmith.flagengine</targetPackage>
<outputDirectory>${project.build.directory}/generated-sources/jsonschema2pojo</outputDirectory>
<generateBuilders>true</generateBuilders>
<includeConstructors>true</includeConstructors>
<includeCopyConstructor>true</includeCopyConstructor>
</configuration>
</plugin>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
Expand All @@ -196,8 +224,15 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<source>11</source>
<target>11</target>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
Expand Down Expand Up @@ -257,7 +292,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<version>3.5.4</version>
</plugin>
</plugins>
</build>
Expand Down
20 changes: 12 additions & 8 deletions src/main/java/com/flagsmith/FlagsmithApiWrapper.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
package com.flagsmith;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.flagsmith.config.FlagsmithConfig;
import com.flagsmith.exceptions.FlagsmithRuntimeError;
import com.flagsmith.flagengine.environments.EnvironmentModel;
import com.flagsmith.flagengine.features.FeatureStateModel;
import com.flagsmith.flagengine.identities.traits.TraitModel;
import com.flagsmith.flagengine.EvaluationContext;
import com.flagsmith.interfaces.FlagsmithCache;
import com.flagsmith.interfaces.FlagsmithSdk;
import com.flagsmith.mappers.EngineMappers;
import com.flagsmith.models.Flags;
import com.flagsmith.models.TraitModel;
import com.flagsmith.models.features.FeatureStateModel;
import com.flagsmith.responses.FlagsAndTraitsResponse;
import com.flagsmith.threads.AnalyticsProcessor;
import com.flagsmith.threads.RequestProcessor;
Expand All @@ -20,7 +22,6 @@
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import lombok.Data;
import lombok.Getter;
import okhttp3.HttpUrl;
import okhttp3.MediaType;
Expand Down Expand Up @@ -248,19 +249,22 @@ public Flags identifyUserWithTraits(
}

@Override
public EnvironmentModel getEnvironment() {
public EvaluationContext getEvaluationContext() {
final Request request = newGetRequest(defaultConfig.getEnvironmentUri());

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

try {
return environmentFuture.get(TIMEOUT, TimeUnit.MILLISECONDS);
JsonNode environmentJson = environmentFuture.get(TIMEOUT, TimeUnit.MILLISECONDS);
return EngineMappers.mapEnvironmentDocumentToContext(environmentJson);
} catch (TimeoutException ie) {
logger.error("Timed out on fetching Feature flags.", ie);
} catch (InterruptedException ie) {
logger.error("Environment loading interrupted.", ie);
} catch (IllegalArgumentException iae) {
logger.error("Environment loading failed.", iae);
} catch (ExecutionException ee) {
logger.error("Execution failed on Environment loading.", ee);
throw new FlagsmithRuntimeError(ee);
Expand Down
Loading