Skip to content

Commit ddfe29f

Browse files
feat: Allow Access to ImmutableMetadata Map as unmodifiable Map
Oriented on the AbstractStructure closes: #1532 Signed-off-by: Carla Köberl <[email protected]>
1 parent 15aaf58 commit ddfe29f

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

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

Lines changed: 6 additions & 3 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
}
@@ -112,10 +117,8 @@ public static ImmutableMetadataBuilder builder() {
112117
return new ImmutableMetadataBuilder();
113118
}
114119

115-
/**
116-
* Immutable builder for {@link ImmutableMetadata}.
117-
*/
118120
public static class ImmutableMetadataBuilder {
121+
119122
private final Map<String, Object> metadata;
120123

121124
private ImmutableMetadataBuilder() {

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)