Skip to content

Commit 09e3c3f

Browse files
feat: Allow Access to ImmutableMetadata Map as unmodifiable Map (#1534)
* feat: Allow Access to ImmutableMetadata Map as unmodifiable Map Oriented on the AbstractStructure closes: #1532 Signed-off-by: Carla Köberl <[email protected]> * fixup: adding back java doc Signed-off-by: Carla Köberl <[email protected]> --------- Signed-off-by: Carla Köberl <[email protected]> Co-authored-by: chrfwow <[email protected]>
1 parent 477d7ce commit 09e3c3f

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package dev.openfeature.sdk;
22

3+
import java.util.Collections;
34
import java.util.HashMap;
45
import java.util.Map;
56
import lombok.EqualsAndHashCode;
@@ -97,6 +98,10 @@ public <T> T getValue(final String key, final Class<T> type) {
9798
}
9899
}
99100

101+
public Map<String, Object> asUnmodifiableMap() {
102+
return Collections.unmodifiableMap(metadata);
103+
}
104+
100105
public boolean isEmpty() {
101106
return metadata.isEmpty();
102107
}

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import static org.junit.jupiter.api.Assertions.assertEquals;
44
import static org.junit.jupiter.api.Assertions.assertNotEquals;
55

6+
import java.util.Map;
7+
import org.junit.jupiter.api.Assertions;
68
import org.junit.jupiter.api.Test;
79

810
class ImmutableMetadataTest {
@@ -25,4 +27,15 @@ void equalImmutableMetadataAreEqual() {
2527

2628
assertEquals(i1, i2);
2729
}
30+
31+
@Test
32+
void retrieveAsUnmodifiableMap() {
33+
ImmutableMetadata metadata =
34+
ImmutableMetadata.builder().addString("key1", "value1").build();
35+
36+
Map<String, Object> unmodifiableMap = metadata.asUnmodifiableMap();
37+
assertEquals(unmodifiableMap.size(), 1);
38+
assertEquals(unmodifiableMap.get("key1"), "value1");
39+
Assertions.assertThrows(UnsupportedOperationException.class, () -> unmodifiableMap.put("key3", "value3"));
40+
}
2841
}

0 commit comments

Comments
 (0)