diff --git a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-facade/src/main/java/org/apache/shardingsphere/governance/core/facade/GovernanceFacade.java b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-facade/src/main/java/org/apache/shardingsphere/governance/core/facade/GovernanceFacade.java index 57262519ed9a2977b403d9954d663c86857a5b0a..0ed71fa6b09da2dcf30c8fbdbafdf75c82fa8e2a 100644 --- a/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-facade/src/main/java/org/apache/shardingsphere/governance/core/facade/GovernanceFacade.java +++ b/shardingsphere-governance/shardingsphere-governance-core/shardingsphere-governance-core-facade/src/main/java/org/apache/shardingsphere/governance/core/facade/GovernanceFacade.java @@ -90,6 +90,18 @@ public final class GovernanceFacade implements AutoCloseable { listenerManager.init(); } + /** + * Update configurations. + * + * @param dataSourceConfigMap schema data source configuration map + * @param schemaRuleMap schema rule map + */ + public void updateConfigurations(final Map> dataSourceConfigMap, final Map> schemaRuleMap) { + for (Entry> entry : dataSourceConfigMap.entrySet()) { + configCenter.persistConfigurations(entry.getKey(), dataSourceConfigMap.get(entry.getKey()), schemaRuleMap.get(entry.getKey()), true); + } + } + @Override public void close() { repositoryFacade.close(); diff --git a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializer.java b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializer.java index f066a401bb00ad36530cf3cbe765a5220237945a..91898d984fb24f950b87e1f89d05f109971f32b4 100644 --- a/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializer.java +++ b/shardingsphere-proxy/shardingsphere-proxy-bootstrap/src/main/java/org/apache/shardingsphere/proxy/initializer/impl/GovernanceBootstrapInitializer.java @@ -30,6 +30,7 @@ import org.apache.shardingsphere.infra.context.schema.SchemaContexts; import org.apache.shardingsphere.infra.config.datasource.DataSourceParameter; import org.apache.shardingsphere.infra.yaml.swapper.YamlRuleConfigurationSwapperEngine; import org.apache.shardingsphere.proxy.config.ProxyConfiguration; +import org.apache.shardingsphere.proxy.config.ProxyConfigurationUpdater; import org.apache.shardingsphere.proxy.config.YamlProxyConfiguration; import org.apache.shardingsphere.proxy.config.util.DataSourceParameterConverter; import org.apache.shardingsphere.proxy.config.yaml.YamlProxyRuleConfiguration; @@ -48,7 +49,7 @@ import java.util.stream.Collectors; */ public final class GovernanceBootstrapInitializer extends AbstractBootstrapInitializer { - private final GovernanceFacade governanceFacade = new GovernanceFacade(); + private final GovernanceFacade governanceFacade = ProxyConfigurationUpdater.getGovernanceFacade(); @Override protected ProxyConfiguration getProxyConfiguration(final YamlProxyConfiguration yamlConfig) { diff --git a/shardingsphere-proxy/shardingsphere-proxy-common/pom.xml b/shardingsphere-proxy/shardingsphere-proxy-common/pom.xml index 9ea8ff3cc9df67bac6755d5e057157498b7f12ea..c96643b5916295e5a9dbf2eddad0b108844100c8 100644 --- a/shardingsphere-proxy/shardingsphere-proxy-common/pom.xml +++ b/shardingsphere-proxy/shardingsphere-proxy-common/pom.xml @@ -37,6 +37,11 @@ shardingsphere-governance-core-common ${project.version} + + org.apache.shardingsphere + shardingsphere-governance-core-facade + ${project.version} + org.apache.shardingsphere shardingsphere-infra-context diff --git a/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/ProxyConfigurationUpdater.java b/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/ProxyConfigurationUpdater.java new file mode 100644 index 0000000000000000000000000000000000000000..62fdac6cf1f5b4ac281230d59df085113964c594 --- /dev/null +++ b/shardingsphere-proxy/shardingsphere-proxy-common/src/main/java/org/apache/shardingsphere/proxy/config/ProxyConfigurationUpdater.java @@ -0,0 +1,52 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shardingsphere.proxy.config; + +import org.apache.shardingsphere.governance.core.facade.GovernanceFacade; +import org.apache.shardingsphere.infra.config.RuleConfiguration; +import org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration; + +import java.util.Collection; +import java.util.Map; + +/** + * Proxy configuration updater. + */ +public final class ProxyConfigurationUpdater { + + private static final GovernanceFacade GOVERNANCE_FACADE = new GovernanceFacade(); + + /** + * Get governance facade. + * + * @return governance facade + */ + public static GovernanceFacade getGovernanceFacade() { + return GOVERNANCE_FACADE; + } + + /** + * Update configurations. + * + * @param dataSourceConfigMap data source config map + * @param schemaRuleMap schema rule map + */ + public static void update(final Map> dataSourceConfigMap, final Map> schemaRuleMap) { + GOVERNANCE_FACADE.updateConfigurations(dataSourceConfigMap, schemaRuleMap); + } +}