@@ -0,0 +1,2236 @@
+/*%0A * Copyright 2016-2018 shardingsphere.io.%0A * %3Cp%3E%0A * Licensed under the Apache License, Version 2.0 (the %22License%22);%0A * you may not use this file except in compliance with the License.%0A * You may obtain a copy of the License at%0A *%0A *     http://www.apache.org/licenses/LICENSE-2.0%0A *%0A * Unless required by applicable law or agreed to in writing, software%0A * distributed under the License is distributed on an %22AS IS%22 BASIS,%0A * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A * See the License for the specific language governing permissions and%0A * limitations under the License.%0A * %3C/p%3E%0A */%0A%0Apackage io.shardingsphere.core.routing.type.broadcast;%0A%0Aimport io.shardingsphere.core.metadata.datasource.ShardingDataSourceMetaData;%0Aimport io.shardingsphere.core.routing.type.RoutingEngine;%0Aimport io.shardingsphere.core.routing.type.RoutingResult;%0Aimport io.shardingsphere.core.routing.type.TableUnit;%0Aimport io.shardingsphere.core.rule.ShardingRule;%0Aimport lombok.RequiredArgsConstructor;%0A%0Aimport java.util.Collection;%0Aimport java.util.LinkedList;%0A%0A/**%0A * Broadcast routing engine for instance databases.%0A * %0A * @author panjuan%0A */%0A@RequiredArgsConstructor%0Apublic final class InstanceDatabaseBroadcastRoutingEngine implements RoutingEngine %7B%0A    %0A    private final ShardingRule shardingRule;%0A    %0A    private final ShardingDataSourceMetaData shardingDataSourceMetaData;%0A    %0A    @Override%0A    public RoutingResult route() %7B%0A        RoutingResult result = new RoutingResult();%0A        for (String each : shardingRule.getShardingDataSourceNames().getDataSourceNames()) %7B%0A            result.getTableUnits().getTableUnits().add(new TableUnit(each));%0A        %7D%0A        removeRedundantTableUnits(result);%0A        return result;%0A    %7D%0A    %0A    private void removeRedundantTableUnits(final RoutingResult routingResult) %7B%0A        Collection%3CTableUnit%3E toRemoved = new LinkedList%3C%3E();%0A        for (TableUnit each : routingResult.getTableUnits().getTableUnits()) %7B%0A            if (!shardingDataSourceMetaData.getAllInstanceDataSourceNames().contains(each.getDataSourceName())) %7B%0A                toRemoved.add(each);%0A            %7D%0A        %7D%0A        routingResult.getTableUnits().getTableUnits().removeAll(toRemoved);%0A    %7D%0A%7D%0A

add InstanceDatabaseBroadcastRoutingEngine.