// Path: electrons/src/main/java/com/ziyuan/ElectronsHolder.java
// public final class ElectronsHolder {
// 
//     /**
//      * 电子
//      */
//     private Electron electron;
// 
//     /**
//      * 要执行的监听器，这里已经排好序了
//      */
//     private List<ElectronsListener> listeners;
// 
//     public Electron getElectron() {
//         return electron;
//     }
// 
//     public void setElectron(Electron electron) {
//         this.electron = electron;
//     }
// 
//     public List<ElectronsListener> getListeners() {
//         return listeners;
//     }
// 
//     public void setListeners(List<ElectronsListener> listeners) {
//         this.listeners = listeners;
//     }
// 
//     /**
//      * 处理
//      *
//      * @throws Exception 处理过程中的异常，同样抛出去
//      */
//     public boolean handle() throws Exception {
//         if (CollectionUtils.isEmpty(listeners)) {
//             return false;
//         }
//         for (ElectronsListener listener : listeners) {
//             listener.onEvent(electron);
//         }
//         return true;
//     }
// 
//     @Override
//     public String toString() {
//         return electron.getSource().getClass().getSimpleName() + " - ";
//     }
// }
// 
// Path: electrons/src/main/java/com/ziyuan/ElectronsListener.java
// public interface ElectronsListener<E extends Electron> extends Serializable {
// 
//     /**
//      * 处理事件
//      *
//      * @param electrons 电子
//      * @throws Exception 处理过程中的异常，比较建议抛出，方便熔断
//      */
//     void onEvent(E electrons) throws Exception;
// }


import com.lmax.disruptor.EventHandler;
import com.lmax.disruptor.dsl.Disruptor;
import com.ziyuan.ElectronsHolder;
import com.ziyuan.ElectronsListener;
import com.ziyuan.Listener;
import lombok.Getter;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
import java.util.*;
package com.ziyuan.chain;



/**
 * ListenerChainBuilder 构造listener链的辅助类
 * 老版本使用，现在已经废弃，仅做纪念T T
 *
 * @author ziyuan
 * @since 2017-03-09
 */
@Deprecated
public final class ListenerChainBuilder {

    /**
     * 不允许初始化
     */
    private ListenerChainBuilder() {
    }

    /**
     * 构建监听器链
     *
     * @param disruptor          disruptor
     * @param electronsListeners listeners
     */
// Path: electrons/src/main/java/com/ziyuan/ElectronsHolder.java
// public final class ElectronsHolder {
// 
//     /**
//      * 电子
//      */
//     private Electron electron;
// 
//     /**
//      * 要执行的监听器，这里已经排好序了
//      */
//     private List<ElectronsListener> listeners;
// 
//     public Electron getElectron() {
//         return electron;
//     }
// 
//     public void setElectron(Electron electron) {
//         this.electron = electron;
//     }
// 
//     public List<ElectronsListener> getListeners() {
//         return listeners;
//     }
// 
//     public void setListeners(List<ElectronsListener> listeners) {
//         this.listeners = listeners;
//     }
// 
//     /**
//      * 处理
//      *
//      * @throws Exception 处理过程中的异常，同样抛出去
//      */
//     public boolean handle() throws Exception {
//         if (CollectionUtils.isEmpty(listeners)) {
//             return false;
//         }
//         for (ElectronsListener listener : listeners) {
//             listener.onEvent(electron);
//         }
//         return true;
//     }
// 
//     @Override
//     public String toString() {
//         return electron.getSource().getClass().getSimpleName() + " - ";
//     }
// }
// 
// Path: electrons/src/main/java/com/ziyuan/ElectronsListener.java
// public interface ElectronsListener<E extends Electron> extends Serializable {
// 
//     /**
//      * 处理事件
//      *
//      * @param electrons 电子
//      * @throws Exception 处理过程中的异常，比较建议抛出，方便熔断
//      */
//     void onEvent(E electrons) throws Exception;
// }


// Path: electrons/src/main/java/com/ziyuan/chain/ListenerChainBuilder.java
import com.lmax.disruptor.EventHandler;
import com.lmax.disruptor.dsl.Disruptor;
import com.ziyuan.ElectronsHolder;
import com.ziyuan.ElectronsListener;
import com.ziyuan.Listener;
import lombok.Getter;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
import java.util.*;

package com.ziyuan.chain;



/**
 * ListenerChainBuilder 构造listener链的辅助类
 * 老版本使用，现在已经废弃，仅做纪念T T
 *
 * @author ziyuan
 * @since 2017-03-09
 */
@Deprecated
public final class ListenerChainBuilder {

    /**
     * 不允许初始化
     */
    private ListenerChainBuilder() {
    }

    /**
     * 构建监听器链
     *
     * @param disruptor          disruptor
     * @param electronsListeners listeners
     */
    public final static void buildChain(Disruptor<ElectronsHolder> disruptor, List<ElectronsListener> electronsListeners) {