@Override public void disconnectWrite(WriteRecipe writeRecipe) { Map<String, WriteRecipe> splitRecipe = splitRecipe(writeRecipe); for (Map.Entry<String, WriteRecipe> en : splitRecipe.entrySet()) { String dataSource = en.getKey(); WriteRecipe splitWriteRecipe = en.getValue(); dataSources.get(dataSource).disconnectWrite(splitWriteRecipe); } }
@Override public void connectWrite(WriteRecipe writeRecipe) { Map<String, WriteRecipe> splitRecipes = splitRecipe(writeRecipe); for (Entry<String, WriteRecipe> entry : splitRecipes.entrySet()) { String dataSource = entry.getKey(); WriteRecipe splitWriteRecipe = entry.getValue(); retrieveDataSource(dataSource).connectWrite(splitWriteRecipe); } }
@Override public void disconnectRead(ReadRecipe readRecipe) { Map<String, ReadRecipe> splitRecipe = splitRecipe(readRecipe); // Dispatch calls to all the data sources for (Map.Entry<String, ReadRecipe> entry : splitRecipe.entrySet()) { try { dataSources.get(entry.getKey()).disconnectRead(entry.getValue()); } catch(RuntimeException ex) { // If a data source fails, still go and disconnect the others readRecipe.getChannelReadRecipes().iterator().next().getReadSubscription().getExceptionWriteFunction().writeValue(ex); } } }
@Override public void connectRead(ReadRecipe readRecipe) { Map<String, ReadRecipe> splitRecipe = splitRecipe(readRecipe); // Dispatch calls to all the data sources for (Map.Entry<String, ReadRecipe> entry : splitRecipe.entrySet()) { try { retrieveDataSource(entry.getKey()).connectRead(entry.getValue()); } catch (RuntimeException ex) { // If data source fail, still go and connect the others readRecipe.getChannelReadRecipes().iterator().next().getReadSubscription().getExceptionWriteFunction().writeValue(ex); } } }