class ConnectionEventListener {

    private ConcurrentHashMap<ConnectionEventType, List<ConnectionEventProcessor>> processors = new ConcurrentHashMap<ConnectionEventType, List<ConnectionEventProcessor>>(
                                                                                                  3);

    /**
     * Dispatch events.
     * 
     * @param type ConnectionEventType
     * @param remoteAddress remoting address
     * @param connection Connection
     */
    public void onEvent(ConnectionEventType type, String remoteAddress, Connection connection) {<FILL_FUNCTION_BODY>}

    /**
     * Add event processor.
     * 
     * @param type ConnectionEventType
     * @param processor ConnectionEventProcessor
     */
    public void addConnectionEventProcessor(ConnectionEventType type,
                                            ConnectionEventProcessor processor) {
        List<ConnectionEventProcessor> processorList = this.processors.get(type);
        if (processorList == null) {
            this.processors.putIfAbsent(type, new CopyOnWriteArrayList<ConnectionEventProcessor>());
            processorList = this.processors.get(type);
        }
        processorList.add(processor);
    }

}

        List<ConnectionEventProcessor> processorList = this.processors.get(type);
        if (processorList != null) {
            for (ConnectionEventProcessor processor : processorList) {
                processor.onEvent(remoteAddress, connection);
            }
        }
    
<no_super_class>