Skip to content

Commit 8b1f386

Browse files
committed
Add test for immutable nodes. Update change log.
1 parent 945605b commit 8b1f386

2 files changed

Lines changed: 39 additions & 20 deletions

File tree

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
CHANGELOG
22
=========
33

4+
1.2.0 (2016-01-13)
5+
------------------
6+
7+
* `JsonNode` containers returned by the `get(ip)` are now backed by
8+
unmodifiable collections. Any mutation done to them will fail with an
9+
`UnsupportedOperationException` exception. This allows safe caching of the
10+
nodes to be done without doing a deep copy of the cached data. Pull request
11+
by Viktor Szathmáry. GitHub #24.
12+
413
1.1.0 (2016-01-04)
514
------------------
615

src/test/java/com/maxmind/db/ReaderTest.java

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,24 @@
11
package com.maxmind.db;
22

3-
import static org.hamcrest.CoreMatchers.containsString;
4-
import static org.junit.Assert.assertArrayEquals;
5-
import static org.junit.Assert.assertEquals;
6-
import static org.junit.Assert.assertNull;
7-
import static org.junit.Assert.assertTrue;
3+
import com.fasterxml.jackson.databind.JsonNode;
4+
import com.fasterxml.jackson.databind.ObjectMapper;
5+
import com.fasterxml.jackson.databind.node.ArrayNode;
6+
import com.fasterxml.jackson.databind.node.ObjectNode;
7+
import org.junit.After;
8+
import org.junit.Before;
9+
import org.junit.Rule;
10+
import org.junit.Test;
11+
import org.junit.rules.ExpectedException;
812

913
import java.io.File;
1014
import java.io.IOException;
1115
import java.io.InputStream;
1216
import java.math.BigInteger;
1317
import java.net.InetAddress;
14-
import java.util.ArrayList;
15-
import java.util.Arrays;
16-
import java.util.Calendar;
17-
import java.util.HashMap;
18-
import java.util.List;
19-
import java.util.Map;
20-
21-
import org.junit.After;
22-
import org.junit.Before;
23-
import org.junit.Rule;
24-
import org.junit.Test;
25-
import org.junit.rules.ExpectedException;
18+
import java.util.*;
2619

27-
import com.fasterxml.jackson.databind.JsonNode;
28-
import com.fasterxml.jackson.databind.ObjectMapper;
29-
import com.fasterxml.jackson.databind.node.ObjectNode;
20+
import static org.hamcrest.CoreMatchers.containsString;
21+
import static org.junit.Assert.*;
3022

3123
public class ReaderTest {
3224
private final ObjectMapper om = new ObjectMapper();
@@ -243,6 +235,24 @@ private void testBrokenDataPointer(Reader reader) throws IOException {
243235
reader.get(InetAddress.getByName("1.1.1.16"));
244236
}
245237

238+
@Test
239+
public void testObjectNodeMutation() throws IOException {
240+
Reader reader = new Reader(getFile("MaxMind-DB-test-decoder.mmdb"));
241+
ObjectNode record = (ObjectNode) reader.get(InetAddress.getByName("::1.1.1.0"));
242+
243+
thrown.expect(UnsupportedOperationException.class);
244+
record.put("Test", "value");
245+
}
246+
247+
@Test
248+
public void testArrayNodeMutation() throws IOException {
249+
Reader reader = new Reader(getFile("MaxMind-DB-test-decoder.mmdb"));
250+
ObjectNode record = (ObjectNode) reader.get(InetAddress.getByName("::1.1.1.0"));
251+
252+
thrown.expect(UnsupportedOperationException.class);
253+
((ArrayNode) record.get("array")).add(1);
254+
}
255+
246256
@Test
247257
public void testClosedReaderThrowsException() throws IOException {
248258
Reader reader = new Reader(getFile("MaxMind-DB-test-decoder.mmdb"));

0 commit comments

Comments
 (0)