Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class ApplicationDispatchHandler extends CommandHandlerBase {
- //CommandHandlerBase is the base class of the commands we want to execute
- //default handlers are those provided by the NAC framework
- private final static Map<AppCommandType, Class<? extends CommandHandlerBase>> defaultHandlers =
- new HashMap<AppCommandType, Class<? extends CommandHandlerBase>>();
- //override handlers store custom behavior to override the behavior supplied by the NAC framework
- //this allows customers to specify their own behavior for any particular app command type, while
- //maintaining core behavior for all other app command types
- private final static Map<AppCommandType, Class<? extends CommandHandlerBase>> overrideHandlers =
- new HashMap<AppCommandType, Class<? extends CommandHandlerBase>>();
- static {
- registerDefaultHandler(AppCommandType.ALARM, AlarmAppHandler.class);
- registerDefaultHandler(AppCommandType.CALENDAR, CalendarAppHandler.class);
- registerDefaultHandler(AppCommandType.CALLING, VoiceDialHandler.class);
- //...
- }
- private static void registerDefaultHandler(AppCommandType key, Class<? extends CommandHandlerBase> handler) {
- defaultHandlers.put(key, handler);
- }
- public static void registerHandler(AppCommandType key, Class<? extends CommandHandlerBase> handler) {
- overrideHandlers.put(key, handler);
- }
- public static void unregisterHandler(AppCommandType key) {
- overrideHandlers.remove(key);
- }
- public static void unregisterAll() {
- overrideHandlers.clear();
- }
- @Override
- public boolean execute(String appTypeString) {
- //...
- AppCommandType appType = getAppType(appTypeString);
- if (appType == null) {
- log.error("No AppType found for action: " + appTypeString);
- return false;
- }
- Class<? extends CommandHandlerBase> handlerClass = getHandler(appType);
- CommandHandlerBase handler = null;
- if (handlerClass != null) {
- try {
- handler = handlerClass.getDeclaredConstructor(ICommandHandlerListener.class).newInstance(getListener());
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- }
- // operate on the handler
- //...
- }
- private AppCommandType getAppType(String appTypeString) {
- AppCommandType appType = null;
- try {
- appType = new AppCommandType(appTypeString);
- } catch (IllegalArgumentException e) {
- log.error("App name '" + action.getApp() + "' is not supported");
- return null;
- }
- return appType;
- }
- private static Class<? extends CommandHandlerBase> getHandler(AppCommandType appType) {
- //CommandHandlerBase not shown here
- Class<? extends CommandHandlerBase> handlerClass = null;
- handlerClass = overrideHandlers.get(appType);
- if (handlerClass == null) {
- handlerClass = defaultHandlers.get(appType);
- }
- return handlerClass;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement