From d0b56c7eaac7ab07fcc4b22c06df03076678270d Mon Sep 17 00:00:00 2001 From: Rob Austin Date: Tue, 16 Dec 2014 11:08:23 +0000 Subject: [PATCH] HCOLL-256 added JIRA number -"Maps containing Value as char[], get() returns too many char[]'s" --- .../chronicle/map/CloseablesManager.java | 4 +++ .../chronicle/map/CHMUseCasesTest.java | 26 ++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/openhft/chronicle/map/CloseablesManager.java b/src/main/java/net/openhft/chronicle/map/CloseablesManager.java index fda6bc718..ee8db28f9 100755 --- a/src/main/java/net/openhft/chronicle/map/CloseablesManager.java +++ b/src/main/java/net/openhft/chronicle/map/CloseablesManager.java @@ -58,6 +58,10 @@ final class CloseablesManager implements Closeable { Closeable closeable = closeables.get(i); try { closeable.close(); + } catch (NullPointerException e) { + // at java.nio.channels.spi.AbstractSelectableChannel.removeKey + // (AbstractSelectableChannel.java:129) is throwing a NULL on close + LOG.debug("", e); } catch (IOException e) { LOG.debug("", e); ex = e; diff --git a/src/test/java/net/openhft/chronicle/map/CHMUseCasesTest.java b/src/test/java/net/openhft/chronicle/map/CHMUseCasesTest.java index 32b069333..5683d0884 100644 --- a/src/test/java/net/openhft/chronicle/map/CHMUseCasesTest.java +++ b/src/test/java/net/openhft/chronicle/map/CHMUseCasesTest.java @@ -74,8 +74,32 @@ public class CHMUseCasesTest { } } + + @Test + @Ignore("HCOLL-256 Maps containing Value as char[], get() returns too many char[]'s") + public void testCharArrayValue() throws ExecutionException, InterruptedException, IOException { + + int valueSize = 10; + + char[] expected = new char[valueSize]; + Arrays.fill(expected, 'X'); + + ChronicleMapBuilder builder = ChronicleMapBuilder + .of(CharSequence.class, char[].class); + + try (ChronicleMap map = newInstance(builder)) { + map.put("Key", expected); + + char[] actual = map.get("Key"); + System.out.println(actual); + assertTrue(Arrays.equals(expected, map.get("Key"))); + + } + } + + /** - * String is not as efficient as CharSequence as a key or value but easier to use The key can + * String is not as efficient as CharSequence as a key or value but easier to use. The key can * only be on heap and variable length serialised. */ @Test