Skip to content

Commit 38e830e

Browse files
thiyagu06toddbaert
authored andcommitted
fixed the implementation of key set method in the ImmutableStructure
Signed-off-by: thiyagu06 <[email protected]>
1 parent 58e2877 commit 38e830e

File tree

3 files changed

+18
-5
lines changed

3 files changed

+18
-5
lines changed

src/main/java/dev/openfeature/sdk/ImmutableStructure.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
package dev.openfeature.sdk;
22

33
import lombok.EqualsAndHashCode;
4-
import lombok.SneakyThrows;
54
import lombok.ToString;
65

7-
import java.time.Instant;
86
import java.util.HashMap;
9-
import java.util.List;
7+
import java.util.HashSet;
108
import java.util.Map;
119
import java.util.Set;
1210
import java.util.stream.Collectors;
@@ -45,7 +43,7 @@ public ImmutableStructure(Map<String, Value> attributes) {
4543

4644
@Override
4745
public Set<String> keySet() {
48-
return this.attributes.keySet();
46+
return new HashSet<>(this.attributes.keySet());
4947
}
5048

5149
// getters

src/main/java/dev/openfeature/sdk/Value.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
@ToString
1818
@EqualsAndHashCode
1919
@SuppressWarnings({"PMD.BeanMembersShouldSerialize", "checkstyle:MissingJavadocType"})
20-
public class Value implements Cloneable{
20+
public class Value implements Cloneable {
2121

2222
private final Object innerObject;
2323

src/test/java/dev/openfeature/sdk/ImmutableStructureTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.util.HashMap;
99
import java.util.List;
1010
import java.util.Map;
11+
import java.util.Set;
1112

1213
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
1314
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -93,4 +94,18 @@ class ImmutableStructureTest {
9394
assertEquals(1, structure.getValue(KEY).asStructure().asMap().get("list").asList().size());
9495
assertEquals("dummy_list_1", structure.getValue(KEY).asStructure().asMap().get("list").asList().get(0).asString());
9596
}
97+
98+
@Test
99+
void ModifyingTheValuesReturnByTheKeySetMethodShouldNotModifyTheUnderlyingImmutableStructure() {
100+
Map<String, Value> map = new HashMap<String, Value>() {
101+
{
102+
put("key", new Value(10));
103+
put("key1", new Value(20));
104+
}
105+
};
106+
ImmutableStructure structure = new ImmutableStructure(map);
107+
Set<String> keys = structure.keySet();
108+
keys.remove("key1");
109+
assertEquals(2, structure.keySet().size());
110+
}
96111
}

0 commit comments

Comments
 (0)