public List<MqttServerDefinition> getServerDefinitionList() {
        List<MqttServerDefinition> serverDefinitionList;
        if (ObjectHelper.isEmpty(servers)) {
            serverDefinitionList = List.of();
        } else if (!SERVER_DEF_PATTERN.matcher(servers).find()) {
            throw new RuntimeCamelException("Server definition list has invalid syntax: " + servers);
        } else {
            Matcher serverDefMatcher = SERVER_DEF_PATTERN.matcher(servers);
            serverDefinitionList = serverDefMatcher.results().map(matchResult -> {

                // MatchResult does not support named groups
                String serverName = matchResult.group(1);
                String clientId = matchResult.group(2);
                String serverUrl = matchResult.group(3);

                return parseFromUrlString(serverName, clientId, serverUrl);
            }).toList();
        }
        return serverDefinitionList;
    }
@Test
    public void checkEndpointUriServerDefsSharedClientId() {
        String uri
                = TahuConstants.EDGE_NODE_SCHEME
                  + "://EndpointUri/ServerDefsSharedClientId?clientId=clientId2&username=user1&password=mysecretpassw0rd&keepAliveTimeout=45&servers=serverName1:tcp://localhost:1883,serverName2:tcp://localhost:1884";

        TahuDefaultEndpoint endpoint = TestSupport.resolveMandatoryEndpoint(context, uri, TahuDefaultEndpoint.class);

        assertThat(endpoint, is(notNullValue()));
        assertThat(endpoint,
                allOf(hasProperty("groupId", is("EndpointUri")),
                        hasProperty("edgeNode", is("ServerDefsSharedClientId"))));

        TahuConfiguration configuration = endpoint.getConfiguration();

        assertThat(configuration, is(notNullValue()));
        assertThat(configuration,
                allOf(hasProperty("clientId", is("clientId2")), hasProperty("checkClientIdLength", is(false)),
                        hasProperty("username", is("user1")),
                        hasProperty("password", is("mysecretpassw0rd")),
                        hasProperty("keepAliveTimeout", is(45))));

        List<MqttServerDefinition> serverDefs = configuration.getServerDefinitionList();
        assertThat(serverDefs, hasSize(2));

        MqttServerDefinition serverDef = serverDefs.get(0);
        assertThat(serverDef.getMqttServerName(), hasProperty("mqttServerName", is("serverName1")));
        assertThat(serverDef.getMqttServerUrl(), hasProperty("mqttServerUrl", is("tcp://localhost:1883")));

        serverDef = serverDefs.get(1);
        assertThat(serverDef.getMqttServerName(), hasProperty("mqttServerName", is("serverName2")));
        assertThat(serverDef.getMqttServerUrl(), hasProperty("mqttServerUrl", is("tcp://localhost:1884")));

        assertThat(serverDefs,
                hasItems(allOf(hasProperty("mqttClientId",
                        hasProperty("mqttClientId", is("clientId2"))),
                        hasProperty("username", is("user1")),
                        hasProperty("password", is("mysecretpassw0rd")),
                        hasProperty("keepAliveTimeout", is(45)),
                        hasProperty("ndeathTopic", is(nullValue())))));
    }