Skip to content

Commit b98de71

Browse files
authored
Allow putDimensionSet after setDimensions (#63)
Before this change, if you call MetricDirective.setDimensions and then MetricDirective.putDimensionSet, you get UnsupportedOperationException. With this change, everything works as expected.
1 parent 97fb5dc commit b98de71

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

src/main/java/software/amazon/cloudwatchlogs/emf/model/MetricDirective.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ List<Set<String>> getAllDimensionKeys() {
8686
*/
8787
void setDimensions(List<DimensionSet> dimensionSets) {
8888
shouldUseDefaultDimension = false;
89-
dimensions = dimensionSets;
89+
dimensions = new ArrayList<>(dimensionSets);
9090
}
9191

9292
/**

src/test/java/software/amazon/cloudwatchlogs/emf/model/MetricDirectiveTest.java

+15
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.fasterxml.jackson.databind.MapperFeature;
2323
import com.fasterxml.jackson.databind.ObjectMapper;
2424
import java.util.Arrays;
25+
import java.util.Collections;
2526
import org.junit.Test;
2627

2728
public class MetricDirectiveTest {
@@ -126,4 +127,18 @@ public void testPutDimensionsWhenDefaultDimensionsDefined() throws JsonProcessin
126127
serializedMetricDirective,
127128
"{\"Dimensions\":[[\"Version\",\"Region\"],[\"Version\",\"Instance\"]],\"Metrics\":[],\"Namespace\":\"aws-embedded-metrics\"}");
128129
}
130+
131+
@Test
132+
public void testPutDimensionsAfterSetDimensions() throws JsonProcessingException {
133+
MetricDirective metricDirective = new MetricDirective();
134+
metricDirective.setDimensions(Collections.singletonList(DimensionSet.of("Version", "1")));
135+
metricDirective.putDimensionSet(DimensionSet.of("Region", "us-east-1"));
136+
metricDirective.putDimensionSet(DimensionSet.of("Instance", "inst-1"));
137+
138+
String serializedMetricDirective = objectMapper.writeValueAsString(metricDirective);
139+
140+
assertEquals(
141+
serializedMetricDirective,
142+
"{\"Dimensions\":[[\"Version\"],[\"Region\"],[\"Instance\"]],\"Metrics\":[],\"Namespace\":\"aws-embedded-metrics\"}");
143+
}
129144
}

0 commit comments

Comments
 (0)