/** ZKBinderPhaseListeners.java.
Purpose:
Description:
History:
4:33:43 PM Feb 3, 2015, Created by jumperchen
Copyright (C) 2015 Potix Corporation. All Rights Reserved.
*/
package org.zkoss.bind.init;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.zkoss.bind.PhaseListener;
import org.zkoss.zk.ui.util.AggregationListener;
/**
* An aggregating phase listeners
* @author jumperchen
* @since 8.0.0
* @see PhaseListener
*/
public class ZKBinderPhaseListeners implements AggregationListener {
private static final Logger _log = LoggerFactory.getLogger(ZKBinderPhaseListeners.class);
private static Map<String, PhaseListener> _listeners = new LinkedHashMap<String, PhaseListener>();
public boolean isHandled(Class<?> klass) {
if (PhaseListener.class.isAssignableFrom(klass)) {
try {
synchronized (_listeners) {
if (!_listeners.containsKey(klass.getName())) {
_listeners.put(klass.getName(), (PhaseListener) klass.newInstance());
}
}
} catch (Exception e) {
_log.error("Error when initial phase listener:" + klass, e);
}
return true;
}
return false;
}
/**
* Returns all of the system phase listeners
*/
public static List<PhaseListener> getSystemPhaseListeners() {
Collection<PhaseListener> values;
synchronized (_listeners) {
values = _listeners.values();
}
return new LinkedList<PhaseListener>(values);
}
}