package org.zbus.server; import java.io.IOException; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import org.zbus.common.remoting.Message; import org.zbus.common.remoting.MessageHandler; import org.zbus.common.remoting.nio.Session; import org.zbus.server.mq.ReplyHelper; public class SubCommandHandler implements MessageHandler { protected String accessToken = ""; protected Map<String, MessageHandler> handlerMap = new ConcurrentHashMap<String, MessageHandler>(); public void registerHandler(String command, MessageHandler handler){ this.handlerMap.put(command, handler); } @Override public void handleMessage(Message msg, Session sess) throws IOException { if(!accessToken.equals("") && !accessToken.equals(msg.getToken())){ ReplyHelper.reply403(msg, sess); return; } String subCmd = msg.getSubCommand(); if(subCmd == null){ subCmd = ""; } MessageHandler handler = this.handlerMap.get(subCmd); if(handler == null){ msg.setBody("sub_cmd=%s Not Found", subCmd); ReplyHelper.reply404(msg, sess); return; } handler.handleMessage(msg, sess); } public String getAccessToken() { return accessToken; } public void setAccessToken(String value) { this.accessToken = value; } }