private void addEntries(final Map<String, String> map, String string) {
        if (string != null && !string.isEmpty()) {

            string = string.replaceAll("^[^{]*\\{", "");
            string = string.replaceAll("}.*", "");

            Arrays.stream(string.split(",")).forEach(pair -> {
                final String[] kv = pair.split("=");
                if (kv.length == 2) {
                    String key = kv[0].replaceAll("\\W", "");
                    String value = kv[1].replaceAll("\\D", "");
                    if (!key.isEmpty()) {
                        final char[] chars = key.toCharArray();
                        chars[0] = Character.toUpperCase(chars[0]);
                        key = new String(chars);
                    }

                    map.put(key, value);
                }
            });
        }
    }
Subclasses should implement this method to add to the cacheBuilder as required
and return a cache built from cacheBuilder. The builder already has a
removalNotificationConsumer if applicable and recordStats has been set.
stroom-cache/stroom-cache-impl/src/main/java/stroom/cache/impl/AbstractStroomCache.java