package org.jboss.seam.remoting; import java.util.Map; import java.util.HashMap; /** * Provides request handlers for different request paths. * * @author Shane Bryzak */ public class RequestHandlerFactory { private static final String REQUEST_PATH_EXECUTE = "/execute"; private static final String REQUEST_PATH_SUBSCRIPTION = "/subscription"; private static final String REQUEST_PATH_POLL = "/poll"; private static final String REQUEST_PATH_INTERFACE = "/interface.js"; private static RequestHandlerFactory instance = new RequestHandlerFactory(); private Map<String,RequestHandler> handlers = new HashMap<String,RequestHandler>(); private RequestHandlerFactory() { registerHandler(REQUEST_PATH_EXECUTE, new ExecutionHandler()); registerHandler(REQUEST_PATH_SUBSCRIPTION, new SubscriptionHandler()); registerHandler(REQUEST_PATH_INTERFACE, new InterfaceGenerator()); try { Class.forName("javax.jms.Message"); registerHandler(REQUEST_PATH_POLL, new PollHandler()); } catch (ClassNotFoundException ex) { // Don't register PollHandler, swallow the exception } } public void registerHandler(String path, RequestHandler handler) { handlers.put(path, handler); } public RequestHandler getRequestHandler(String path) { return handlers.get(path); } public static RequestHandlerFactory getInstance() { return instance; } }