public void addHandler(Handler handler) { if (log.isDebugEnabled()) log.debug("adding handler " + handler + " to phase " + handler.getPhase()); HandlerOrderer phaseHandlers = getPhaseHandlers(handler.getPhase()); if (phaseHandlers == null) { if (log.isDebugEnabled()) log.debug("Phase " + handler.getPhase() + " does not exist. Skipping handler " + handler.getClass().getName()); } else { phaseHandlers.insertHandler(handler); } }
/** * Determines whether or not this Pipeline "understands" a particular header. * @param name * @return true if pipeline understands a header */ public boolean understands(QName name) { for (Iterator itr = phases.iterator(); itr.hasNext();) { Phase phase = (Phase) itr.next(); List phaseHandlers = getPhaseHandlers(phase.getName()).getHandlers(); for (int i = 0; i < phaseHandlers.size(); i++ ) { Handler h = (Handler) phaseHandlers.get(i); QName[] understoodQs = h.getUnderstoodHeaders(); if (understoodQs != null) { for (int j = 0; j < understoodQs.length; j++) { if (understoodQs[j].equals(name)) return true; } } } } return false; }
log.debug("Invoking handler " + h.getClass().getName() + " in phase " + phase.getName()); h.invoke(context);
/** * Takes a fault, creates a fault message and sends it via the fault channel. * * @param fault * @param context */ public void handleFault(XFireFault fault, MessageContext context) { Stack invoked = (Stack) context.getProperty(this.toString()); if ( null != invoked ) { while (invoked.size() > 0) { Handler h = (Handler) invoked.pop(); h.handleFault(fault, context); } } }
public void run() { try { sendMessage(context, paramArray, operation, invoker); } catch (Exception e) { XFireFault fault = XFireFault.createFault(e); try { context.getCurrentPipeline().pause(); context.setProperty(DefaultFaultHandler.EXCEPTION, fault); context.getCurrentPipeline().handleFault(fault, context); context.getFaultHandler().invoke(context); } catch (Exception e1) { logger.warn("Error invoking fault handler.", e1); } } } };
context.getFaultHandler().invoke(context);
context.getInPipeline().handleFault(fault, context); context.getFaultHandler().invoke(context);