public void register(final String hostname, final String uriPattern, final Supplier<AsyncPushConsumer> supplier) { Args.notBlank(uriPattern, "URI pattern"); Args.notNull(supplier, "Supplier"); if (hostname == null) { primary.register(uriPattern, supplier); } else { final String key = hostname.toLowerCase(Locale.ROOT); UriPatternMatcher<Supplier<AsyncPushConsumer>> matcher = hostMap.get(key); if (matcher == null) { final UriPatternMatcher<Supplier<AsyncPushConsumer>> newMatcher = new UriPatternMatcher<>(); matcher = hostMap.putIfAbsent(key, newMatcher); if (matcher == null) { matcher = newMatcher; } } matcher.register(uriPattern, supplier); } }
@Test public void testEntrySet() throws Exception { final Object h1 = new Object(); final Object h2 = new Object(); final Object h3 = new Object(); final UriPatternMatcher<Object> matcher = new UriPatternMatcher<>(); Assert.assertEquals(0, matcher.entrySet().size()); matcher.register("/h1", h1); Assert.assertEquals(1, matcher.entrySet().size()); matcher.register("/h2", h2); Assert.assertEquals(2, matcher.entrySet().size()); matcher.register("/h3", h3); Assert.assertEquals(3, matcher.entrySet().size()); }