/* (non-Javadoc)
  * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
  */
 public int compare(WxMessageHandlerIfc o1, WxMessageHandlerIfc o2) {
   if (o1.priority() > o2.priority()) {
     return -1;
   } else if (o1.priority() < o2.priority()) {
     return 1;
   } else {
     return 0;
   }
 }
  public WxBaseRespEntity handleMessage(WxBaseMsgEntity msg) {
    List<WxMessageHandlerIfc> handlerList = new ArrayList<WxMessageHandlerIfc>();
    handlerList.addAll(handlers);
    Collections.sort(handlerList, new WxMessageHandlerComparator());

    Map<String, Object> context = new HashMap<String, Object>();
    WxBaseRespEntity result = null;
    for (WxMessageHandlerIfc handler : handlerList) {
      result = handler.handle(msg, context);
    }

    if (result == null) {
      result = defaultResult(msg.getToUserName(), msg.getFromUserName());
    }
    return result;
  }