/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.eas.server; import com.eas.client.threetier.Request; import com.eas.client.threetier.Response; import com.eas.client.threetier.requests.*; import com.eas.proto.ProtoReaderException; import com.eas.server.handlers.*; import java.io.IOException; /** * * @author pk, mg */ public class RequestHandlerFactory implements PlatypusRequestVisitor { protected RequestHandler<? extends Request, ? extends Response> handler; protected PlatypusServerCore serverCore; public RequestHandlerFactory(PlatypusServerCore aServerCore) { super(); serverCore = aServerCore; } public RequestHandler<? extends Request, ? extends Response> getHandler() { return handler; } /** * Creates appropriate request handler. * * @param serverCore PlatypusServerCore instance. * @param rq Request instance (wraped or unwrapped) * @return appropriate request handler instance. * @throws IOException * @throws ProtoReaderException * @see PlatypusServerCore * @see Session */ public static RequestHandler<? extends Request, ? extends Response> getHandler(PlatypusServerCore serverCore, Request rq) throws Exception { RequestHandlerFactory factory = new RequestHandlerFactory(serverCore); rq.accept(factory); return factory.getHandler(); } @Override public void visit(AppQueryRequest rq) throws Exception { handler = new AppQueryRequestHandler(serverCore, rq); } @Override public void visit(LogoutRequest rq) throws Exception { handler = new LogoutRequestHandler(serverCore, rq); } @Override public void visit(CommitRequest rq) throws Exception { handler = new CommitRequestHandler(serverCore, rq); } @Override public void visit(ServerModuleStructureRequest rq) throws Exception { handler = new ServerModuleStructureRequestHandler(serverCore, rq); } @Override public void visit(DisposeServerModuleRequest rq) throws Exception { handler = new DisposeServerModuleRequestHandler(serverCore, rq); } @Override public void visit(RPCRequest rq) throws Exception { handler = new RPCRequestHandler(serverCore, rq); } @Override public void visit(ExecuteQueryRequest rq) throws Exception { handler = new ExecuteQueryRequestHandler(serverCore, rq); } @Override public void visit(CredentialRequest rq) throws Exception { handler = new CredentialRequestHandler(serverCore, rq); } @Override public void visit(ModuleStructureRequest rq) throws Exception { handler = new ModuleStructureRequestHandler(serverCore, rq); } @Override public void visit(ResourceRequest rq) throws Exception { handler = new ResourceRequestHandler(serverCore, rq); } }