private void apolloWatchPrefixes()

in shenyu-sync-data-center/shenyu-sync-data-apollo/src/main/java/org/apache/shenyu/sync/data/apollo/ApolloDataService.java [87:152]


    private void apolloWatchPrefixes() {
        final ConfigChangeListener listener = changeEvent -> changeEvent.changedKeys().forEach(changeKey -> {
            try {
                final ConfigChange configChange = changeEvent.getChange(changeKey);
                if (Objects.isNull(configChange)) {
                    LOG.error("apollo watchPrefixes error configChange is null {}", changeKey);
                    return;
                }
                final String newValue = configChange.getNewValue();
                // skip last is "list"
                final int lastListStrIndex = changeKey.length() - DefaultNodeConstants.LIST_STR.length();
                if (changeKey.lastIndexOf(DefaultNodeConstants.LIST_STR) == lastListStrIndex) {
                    return;
                }
                // check prefix
                if (changeKey.indexOf(ApolloPathConstants.PLUGIN_DATA_ID) == 0) {
                    if (PropertyChangeType.DELETED.equals(configChange.getChangeType())) {
                        unCachePluginData(changeKey);
                    } else {
                        cachePluginData(newValue);
                    }
                } else if (changeKey.indexOf(ApolloPathConstants.SELECTOR_DATA_ID) == 0) {
                    if (PropertyChangeType.DELETED.equals(configChange.getChangeType())) {
                        unCacheSelectorData(changeKey);
                    } else {
                        cacheSelectorData(newValue);
                    }
                } else if (changeKey.indexOf(ApolloPathConstants.RULE_DATA_ID) == 0) {
                    if (PropertyChangeType.DELETED.equals(configChange.getChangeType())) {
                        unCacheRuleData(changeKey);
                    } else {
                        cacheRuleData(newValue);
                    }
                } else if (changeKey.indexOf(ApolloPathConstants.AUTH_DATA_ID) == 0) {
                    if (PropertyChangeType.DELETED.equals(configChange.getChangeType())) {
                        unCacheAuthData(changeKey);
                    } else {
                        cacheAuthData(newValue);
                    }
                } else if (changeKey.indexOf(ApolloPathConstants.META_DATA_ID) == 0) {
                    if (PropertyChangeType.DELETED.equals(configChange.getChangeType())) {
                        unCacheMetaData(changeKey);
                    } else {
                        cacheMetaData(newValue);
                    }
                } else if (changeKey.indexOf(ApolloPathConstants.PROXY_SELECTOR_DATA_ID) == 0) {
                    if (PropertyChangeType.DELETED.equals(configChange.getChangeType())) {
                        unCacheProxySelectorData(changeKey);
                    } else {
                        cacheProxySelectorData(newValue);
                    }
                } else if (changeKey.indexOf(ApolloPathConstants.DISCOVERY_DATA_ID) == 0) {
                    if (PropertyChangeType.DELETED.equals(configChange.getChangeType())) {
                        unCacheDiscoveryUpstreamData(changeKey);
                    } else {
                        cacheDiscoveryUpstreamData(newValue);
                    }
                }
            } catch (Exception e) {
                LOG.error("apollo sync listener change key handler error", e);
            }
        });
        watchConfigChangeListener = listener;
        configService.addChangeListener(listener, Collections.emptySet(), ApolloPathConstants.pathKeySet());

    }