public void applyConfig(ClientBwListDTO configDTO) {
        requireNonNull(configDTO, "Client filtering config must not be null");
        requireNonNull(configDTO.mode, "Config mode must not be null");
        requireNonNull(configDTO.entries, "Config entries must not be null");

        ClientSelector selector;
        switch (configDTO.mode) {
            case DISABLED:
                selector = ClientSelectors.any();
                break;
            case WHITELIST:
                selector = createSelector(configDTO.entries);
                break;
            case BLACKLIST:
                selector = ClientSelectors.inverse(createSelector(configDTO.entries));
                break;
            default:
                throw new IllegalArgumentException("Unknown client B/W list mode: " + configDTO.mode);
        }

        clientEngine.applySelector(selector);
    }
@Test
    public void testApplyConfig_whitelist() {
        ClientBwListDTO config = createConfig(Mode.WHITELIST,
                new ClientBwListEntryDTO(Type.IP_ADDRESS, "127.0.0.*"),
                new ClientBwListEntryDTO(Type.IP_ADDRESS, "192.168.0.1"),
                new ClientBwListEntryDTO(Type.IP_ADDRESS, "192.168.0.42-43"),
                new ClientBwListEntryDTO(Type.IP_ADDRESS, "fe80:0:0:0:45c5:47ee:fe15:493a"),
                new ClientBwListEntryDTO(Type.INSTANCE_NAME, "client*"),
                new ClientBwListEntryDTO(Type.LABEL, "label*"));
        handler.applyConfig(config);

        Client[] allowed = {
                createClient("127.0.0.3", "a_name"),
                createClient("192.168.0.1", "a_name"),
                createClient("192.168.0.42", "a_name"),
                createClient("fe80:0:0:0:45c5:47ee:fe15:493a", "a_name"),
                createClient("192.168.0.101", "client4"),
                createClient("192.168.0.101", "a_name", "label")
        };
        for (Client client : allowed) {
            assertTrue(clientEngine.isClientAllowed(client));
        }

        Client[] denied = {
                createClient("192.168.0.101", "a_name", "random"),
                createClient("fe70:0:0:0:35c5:16ee:fe15:491a", "a_name", "random")
        };
        for (Client client : denied) {
            assertFalse(clientEngine.isClientAllowed(client));
        }
    }