@Override
 public void unbindOutputs(ChannelBindingService channelBindingService) {
   if (log.isDebugEnabled()) {
     log.debug(String.format("Unbinding outputs for %s:%s", this.channelNamespace, this.type));
   }
   for (Map.Entry<String, ChannelHolder> channelHolderEntry : this.outputHolders.entrySet()) {
     if (channelHolderEntry.getValue().isBindable()) {
       if (log.isDebugEnabled()) {
         log.debug(
             String.format(
                 "Binding %s:%s:%s",
                 this.channelNamespace, this.type, channelHolderEntry.getKey()));
       }
       channelBindingService.unbindProducers(channelHolderEntry.getKey());
     }
   }
 }
 @Override
 public void bindInputs(ChannelBindingService channelBindingService) {
   if (log.isDebugEnabled()) {
     log.debug(String.format("Binding inputs for %s:%s", this.channelNamespace, this.type));
   }
   for (Map.Entry<String, ChannelHolder> channelHolderEntry : this.inputHolders.entrySet()) {
     String inputChannelName = channelHolderEntry.getKey();
     ChannelHolder channelHolder = channelHolderEntry.getValue();
     if (channelHolder.isBindable()) {
       if (log.isDebugEnabled()) {
         log.debug(
             String.format(
                 "Binding %s:%s:%s", this.channelNamespace, this.type, inputChannelName));
       }
       channelBindingService.bindConsumer(channelHolder.getMessageChannel(), inputChannelName);
     }
   }
 }
 @Override
 public void unbindOutputs(ChannelBindingService adapter) {
   adapter.unbindProducers(name);
 }
 @Override
 public void bindOutputs(ChannelBindingService adapter) {
   adapter.bindProducer(messageChannel, name);
 }