package br.ufms.dct.simplerep.ar; import java.util.ArrayList; import br.ufms.dct.simplerep.handlers.AbstractHandler; import br.ufms.dct.simplerep.handlers.AddressingReplicasOutHandler; /** * Mainly responsible for the implementation of the In and Out Flows * * */ public class RequestProcessor { private ArrayList<AbstractHandler> inFlowHandlers; private ArrayList<AbstractHandler> outFlowHandlers; private ProcessingStatus processFlow(MessageContext unprocessedMsg, ArrayList<AbstractHandler> handlers) { for (AbstractHandler h : handlers) { if (h.invoke(unprocessedMsg) == ProcessingStatus.ABORT) { return ProcessingStatus.ABORT; } } return ProcessingStatus.CONTINUE; } public ProcessingStatus inFlow(MessageContext unprocessedMsg) { return processFlow(unprocessedMsg, this.inFlowHandlers); } public ProcessingStatus outFlow(MessageContext unprocessedMsg) { return processFlow(unprocessedMsg, this.outFlowHandlers); } protected RequestProcessor() { } private static RequestProcessor singleton = null; public static RequestProcessor getProcessor() { if (singleton == null) { singleton = new RequestProcessor(); singleton.inFlowHandlers = new ArrayList<AbstractHandler>(); singleton.outFlowHandlers = new ArrayList<AbstractHandler>(); singleton.outFlowHandlers.add(new AddressingReplicasOutHandler()); } return singleton; } }