Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
e473ffc
Modified POMs
gthea Jun 19, 2025
5a6ee5e
Publish to Central Repository
gthea Jun 19, 2025
7aa63c6
Add skip if already published in modules
gthea Jun 23, 2025
6d424b7
Fix versions
gthea Jun 23, 2025
16b227d
Merge pull request #573 from splitio/FME-4167-sonatype
gthea Jun 25, 2025
4141392
fixed tracker warning
chillaq Jul 3, 2025
02fce9d
upgraded gson
chillaq Jul 3, 2025
2b09e78
Merge pull request #581 from splitio/FME-4395-fix-tracker-warning
chillaq Jul 3, 2025
9336137
removed gson internal import
chillaq Jul 3, 2025
37ee1c8
Merge pull request #582 from splitio/remove-gson-internal
chillaq Jul 3, 2025
cd96c0a
Fixed RBS cache contains method
chillaq Jul 11, 2025
da867f9
Merge pull request #583 from splitio/fix-rbscache-contains
chillaq Jul 11, 2025
0dfdd8d
Bump org.apache.commons:commons-lang3 from 3.4 to 3.18.0 in /client
dependabot[bot] Jul 12, 2025
05bcd7b
Merge branch 'development' into dependabot/maven/client/org.apache.co…
sanzmauro Jul 18, 2025
4b02a3f
Update ci.yml
chillaq Jul 18, 2025
1256488
Removed jfrog references
chillaq Jul 18, 2025
54b5990
Update ci.yml
chillaq Jul 18, 2025
d7c7aa6
Merge pull request #584 from splitio/dependabot/maven/client/org.apac…
chillaq Jul 18, 2025
9b80fb7
Update ci.yml
chillaq Jul 18, 2025
c7fb749
Merge branch 'development' into ci-remove-deploy
chillaq Jul 18, 2025
5c29fc8
Merge pull request #589 from splitio/ci-remove-deploy
chillaq Jul 18, 2025
e679ccf
Updated version and changes
chillaq Jul 21, 2025
cd16622
Update CHANGES.txt
chillaq Jul 21, 2025
a686521
Merge pull request #590 from splitio/release-4.16.1
chillaq Jul 21, 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
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,9 @@ jobs:
if: matrix.jdk == '8' && github.event_name == 'pull_request' && github.ref != 'refs/heads/master' && github.ref != 'refs/heads/development'
run: mvn checkstyle::check

- name: Deploy
if: matrix.jdk == '8' && github.event_name == 'push' && github.ref != 'refs/heads/master' && github.ref != 'refs/heads/development'
run: mvn --batch-mode deploy -P test
# - name: Deploy
# if: matrix.jdk == '8' && github.event_name == 'push' && github.ref != 'refs/heads/master' && github.ref != 'refs/heads/development'
# run: mvn --batch-mode deploy -P test

- name: SonarQube Scan (Push)
if: matrix.jdk == '11' && github.event_name == 'push' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/development')
Expand Down
5 changes: 5 additions & 0 deletions CHANGES.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
4.16.1 (Jul 21, 2025)
- Fixed vulnerabilities:
- Upgraded org.apache.commons-commons-lang3 to 3.18.0
- Upgraded com.google.code.gson.gson to 2.13.1

4.16.0 (May 28, 2025)
- Added support for rule-based segments. These segments determine membership at runtime by evaluating their configured rules against the user attributes provided to the SDK.
- Added support for feature flag prerequisites. This allows customers to define dependency conditions between flags, which are evaluated before any allowlists or targeting rules.
Expand Down
19 changes: 11 additions & 8 deletions client/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
<parent>
<groupId>io.split.client</groupId>
<artifactId>java-client-parent</artifactId>
<version>4.16.0</version>
<version>4.16.1</version>
</parent>
<version>4.16.0</version>
<version>4.16.1</version>
<artifactId>java-client</artifactId>
<packaging>jar</packaging>
<name>Java Client</name>
Expand All @@ -19,12 +19,15 @@
<build>
<plugins>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.3</version>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.8.0</version>
<extensions>true</extensions>
<configuration>
<skipNexusStagingDeployMojo>false</skipNexusStagingDeployMojo>
<ignorePublishedComponents>true</ignorePublishedComponents>
<publishingServerId>central</publishingServerId>
<autoPublish>false</autoPublish>
<waitUntil>published</waitUntil>
</configuration>
</plugin>
</plugins>
Expand Down Expand Up @@ -173,7 +176,7 @@
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.9.0</version>
<version>2.13.1</version>
</dependency>
<dependency>
<groupId>org.yaml</groupId>
Expand All @@ -185,7 +188,7 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
<version>3.18.0</version>
<scope>test</scope>
</dependency>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
import java.net.URISyntaxException;
import java.util.List;

import static com.google.gson.internal.$Gson$Preconditions.checkNotNull;
import static com.google.common.base.Preconditions.checkNotNull;

public class EventsSender {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;

import static com.google.gson.internal.$Gson$Preconditions.checkNotNull;
import static com.google.common.base.Preconditions.checkNotNull;

public class InMemoryEventsStorage implements EventsStorage{

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ private void sendUniqueKeys(){
}
try {
if (uniqueKeysTracker.size() == 0) {
_log.warn("The Unique Keys Tracker is empty");
_log.debug("The Unique Keys Tracker is empty");
return;
}
HashMap<String, HashSet<String>> uniqueKeysHashMap = popAll();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,6 @@ public Set<String> getSegments() {

@Override
public boolean contains(Set<String> ruleBasedSegmentNames) {
return getSegments().containsAll(ruleBasedSegmentNames);
return _concurrentMap.keySet().containsAll(ruleBasedSegmentNames);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ private List<ParsedRuleBasedSegment> stringsToParsedRuleBasedSegments(List<Strin

@Override
public boolean contains(Set<String> ruleBasedSegmentNames) {
return getSegments().containsAll(ruleBasedSegmentNames);
return _userStorageWrapper.getKeysByPrefix(PrefixAdapter.buildGetAllRuleBasedSegment()).containsAll(ruleBasedSegmentNames);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
import com.google.common.collect.Lists;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;

public class RuleBasedSegmentCacheInMemoryImplTest extends TestCase {
Expand All @@ -31,6 +33,8 @@ public void testAddAndDeleteSegment(){
ruleBasedSegmentCache.update(Lists.newArrayList(parsedRuleBasedSegment), null, 123);
assertEquals(123, ruleBasedSegmentCache.getChangeNumber());
assertEquals(parsedRuleBasedSegment, ruleBasedSegmentCache.get("sample_rule_based_segment"));
assertTrue(ruleBasedSegmentCache.contains(new HashSet<>(Arrays.asList("sample_rule_based_segment"))));
assertFalse(ruleBasedSegmentCache.contains(new HashSet<>(Arrays.asList("sample_rule_based_segment", "123"))));

ruleBasedSegmentCache.update(null, Lists.newArrayList("sample_rule_based_segment"), 124);
assertEquals(124, ruleBasedSegmentCache.getChangeNumber());
Expand Down Expand Up @@ -62,5 +66,7 @@ public void testMultipleSegment(){
ruleBasedSegmentCache.update(Lists.newArrayList(parsedRuleBasedSegment1, parsedRuleBasedSegment2), null, 123);
assertEquals(Lists.newArrayList("another_rule_based_segment", "sample_rule_based_segment"), ruleBasedSegmentCache.ruleBasedSegmentNames());
assertEquals(Sets.newHashSet("segment2", "segment1", "employees"), ruleBasedSegmentCache.getSegments());
assertTrue(ruleBasedSegmentCache.contains(new HashSet<>(Arrays.asList("sample_rule_based_segment", "another_rule_based_segment"))));
assertTrue(ruleBasedSegmentCache.contains(new HashSet<>(Arrays.asList("sample_rule_based_segment"))));
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.split.storages.pluggable.adapters;

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import io.split.client.dtos.*;
import io.split.client.utils.Json;
import io.split.engine.ConditionsTestUtil;
Expand All @@ -16,10 +17,14 @@
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.*;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import static io.split.TestHelper.makeRuleBasedSegment;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

public class UserCustomRuleBasedSegmentAdapterConsumerTest {

Expand Down Expand Up @@ -66,10 +71,16 @@ public void testGetChangeNumberWithGsonFailing() {
public void testGetRuleBasedSegment() {
RuleBasedSegmentParser ruleBasedSegmentParser = new RuleBasedSegmentParser();
RuleBasedSegment ruleBasedSegment = getRuleBasedSegment(RULE_BASED_SEGMENT_NAME);
ParsedRuleBasedSegment expected = ruleBasedSegmentParser.parse(ruleBasedSegment);
ConcurrentMap<String, ParsedRuleBasedSegment> rbsCollection = Maps.newConcurrentMap();
rbsCollection.put(RULE_BASED_SEGMENT_NAME, expected);
Mockito.when(_userStorageWrapper.get(PrefixAdapter.buildRuleBasedSegmentKey(RULE_BASED_SEGMENT_NAME))).thenReturn(getRuleBasedSegmentAsJson(ruleBasedSegment));
Mockito.when(_userStorageWrapper.getKeysByPrefix("SPLITIO.rbsegment*")).thenReturn(new HashSet<>(Arrays.asList(RULE_BASED_SEGMENT_NAME)));
ParsedRuleBasedSegment result = _userCustomRuleBasedSegmentAdapterConsumer.get(RULE_BASED_SEGMENT_NAME);
ParsedRuleBasedSegment expected = ruleBasedSegmentParser.parse(ruleBasedSegment);
Assert.assertEquals(expected, result);
assertTrue(_userCustomRuleBasedSegmentAdapterConsumer.contains(new HashSet<>(Arrays.asList(RULE_BASED_SEGMENT_NAME))));
assertFalse(_userCustomRuleBasedSegmentAdapterConsumer.contains(new HashSet<>(Arrays.asList(RULE_BASED_SEGMENT_NAME, "123"))));

}

@Test
Expand Down Expand Up @@ -135,7 +146,7 @@ public void testGetSegments() {
Mockito.when(_userStorageWrapper.getMany(Mockito.anyObject())).
thenReturn(getManyExpected);
HashSet<String> segmentResult = (HashSet<String>) _userCustomRuleBasedSegmentAdapterConsumer.getSegments();
Assert.assertTrue(segmentResult.contains("employee"));
assertTrue(segmentResult.contains("employee"));
}

@Test
Expand Down
15 changes: 9 additions & 6 deletions okhttp-modules/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
<parent>
<artifactId>java-client-parent</artifactId>
<groupId>io.split.client</groupId>
<version>4.16.0</version>
<version>4.16.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<version>4.16.0</version>
<version>4.16.1</version>
<artifactId>okhttp-modules</artifactId>
<packaging>jar</packaging>
<name>http-modules</name>
Expand All @@ -20,12 +20,15 @@
<build>
<plugins>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.3</version>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.8.0</version>
<extensions>true</extensions>
<configuration>
<skipNexusStagingDeployMojo>false</skipNexusStagingDeployMojo>
<ignorePublishedComponents>true</ignorePublishedComponents>
<publishingServerId>central</publishingServerId>
<autoPublish>false</autoPublish>
<waitUntil>published</waitUntil>
</configuration>
</plugin>
</plugins>
Expand Down
16 changes: 8 additions & 8 deletions pluggable-storage/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<artifactId>java-client-parent</artifactId>
<groupId>io.split.client</groupId>
<version>4.16.0</version>
<version>4.16.1</version>
</parent>

<version>2.1.0</version>
Expand All @@ -21,15 +21,15 @@
<build>
<plugins>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.3</version>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.8.0</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
<skipNexusStagingDeployMojo>true</skipNexusStagingDeployMojo>
<ignorePublishedComponents>true</ignorePublishedComponents>
<publishingServerId>central</publishingServerId>
<autoPublish>false</autoPublish>
<waitUntil>published</waitUntil>
</configuration>
</plugin>
</plugins>
Expand Down
56 changes: 10 additions & 46 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>io.split.client</groupId>
<artifactId>java-client-parent</artifactId>
<version>4.16.0</version>
<version>4.16.1</version>
<dependencyManagement>
<dependencies>
<dependency>
Expand Down Expand Up @@ -47,31 +47,14 @@
<developerConnection>scm:git@github.com:splitio/java-client.git</developerConnection>
<url>git@github.com:splitio/java-client.git</url>
</scm>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/releases</url>
</repository>
</distributionManagement>
<!-- distributionManagement block removed as it's not needed with central-publishing-maven-plugin -->
<repositories>
<repository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/releases</url>
</repository>
<repository>
<id>maven-all-virtual</id>
<url>https://splitio.jfrog.io/artifactory/maven-all-virtual</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>maven-all-virtual</id>
<url>https://splitio.jfrog.io/artifactory/maven-all-virtual</url>
</pluginRepository>
</pluginRepositories>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
Expand Down Expand Up @@ -154,16 +137,6 @@
<profiles>
<profile>
<id>test</id>
<distributionManagement>
<repository>
<id>maven-dev</id>
<url>https://splitio.jfrog.io/artifactory/maven-dev/</url>
</repository>
<snapshotRepository>
<id>maven-dev</id>
<url>https://splitio.jfrog.io/artifactory/maven-dev/</url>
</snapshotRepository>
</distributionManagement>
<build>
<plugins>
<plugin>
Expand All @@ -188,16 +161,7 @@

<profile>
<id>release</id>
<distributionManagement>
<snapshotRepository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/releases</url>
</repository>
</distributionManagement>
<!-- distributionManagement block removed as it's not needed with central-publishing-maven-plugin -->
<build>
<plugins>
<plugin>
Expand Down Expand Up @@ -230,16 +194,16 @@
</execution>
</executions>
</plugin>
<!-- Release plugin -->
<!-- Central Repository publishing plugin -->
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.3</version>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.8.0</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
<publishingServerId>central</publishingServerId>
<autoPublish>false</autoPublish>
<waitUntil>published</waitUntil>
</configuration>
</plugin>
</plugins>
Expand Down
16 changes: 8 additions & 8 deletions redis-wrapper/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<artifactId>java-client-parent</artifactId>
<groupId>io.split.client</groupId>
<version>4.16.0</version>
<version>4.16.1</version>
</parent>
<artifactId>redis-wrapper</artifactId>
<version>3.1.1</version>
Expand Down Expand Up @@ -43,15 +43,15 @@
<build>
<plugins>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.3</version>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.8.0</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
<skipNexusStagingDeployMojo>true</skipNexusStagingDeployMojo>
<ignorePublishedComponents>true</ignorePublishedComponents>
<publishingServerId>central</publishingServerId>
<autoPublish>false</autoPublish>
<waitUntil>published</waitUntil>
</configuration>
</plugin>
</plugins>
Expand Down
Loading