1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package org.apache.shardingsphere.infra.config.rule.checker; 19 20 import org.apache.shardingsphere.infra.config.rule.RuleConfiguration; 21 import org.apache.shardingsphere.infra.rule.ShardingSphereRule; 22 import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI; 23 import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPI; 24 25 import javax.sql.DataSource; 26 import java.util.Collection; 27 import java.util.Collections; 28 import java.util.Map; 29 30 /** 31 * Rule configuration checker. 32 * 33 * @param <T> type of rule configuration 34 */ 35 @SingletonSPI 36 public interface RuleConfigurationChecker<T extends RuleConfiguration> extends OrderedSPI<T> { 37 38 /** 39 * Check rule configuration. 40 * 41 * @param databaseName database name to be checked 42 * @param ruleConfig rule configuration to be checked 43 * @param dataSourceMap data sources to be checked 44 * @param builtRules built rules 45 */ 46 void check(String databaseName, T ruleConfig, Map<String, DataSource> dataSourceMap, Collection<ShardingSphereRule> builtRules); 47 48 /** 49 * Get required data source names. 50 * 51 * @param ruleConfig rule configuration 52 * @return required data source names 53 */ 54 default Collection<String> getRequiredDataSourceNames(final T ruleConfig) { 55 return Collections.emptyList(); 56 } 57 58 /** 59 * Get table names. 60 * 61 * @param ruleConfig rule configuration 62 * @return table names 63 */ 64 default Collection<String> getTableNames(final T ruleConfig) { 65 return Collections.emptyList(); 66 } 67 }