public void addHandlers(List newhandlers) { if (newhandlers == null) return; for (Iterator itr = newhandlers.iterator(); itr.hasNext();) { Handler handler = (Handler) itr.next(); addHandler(handler); } }
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); } }
public void resume(MessageContext context) throws Exception { if (!paused) return; paused = false; invoke(context); }
HandlerPipeline faultPipe = new HandlerPipeline(context.getXFire().getOutPhases()); faultPipe.addHandlers(context.getXFire().getFaultHandlers()); faultPipe.addHandlers(faultChannel.getTransport().getFaultHandlers()); faultPipe.addHandlers(context.getService().getFaultHandlers()); faultPipe.invoke(context); faultPipe.handleFault(fault2, context);
HandlerPipeline inPipe = new HandlerPipeline(contextClient.getXFire().getInPhases()); inPipe.addHandlers(contextClient.getInHandlers()); inPipe.addHandlers(contextClient.getTransport().getInHandlers()); context.setInPipeline(inPipe); inPipe.invoke(context); HandlerPipeline inPipe = new HandlerPipeline(getXFire().getInPhases()); inPipe.addHandlers(getFaultHandlers()); inPipe.addHandlers(getTransport().getFaultHandlers()); context.setInPipeline(inPipe); inPipe.invoke(context);
context.getOutPipeline().invoke(context); context.setProperty(DefaultFaultHandler.EXCEPTION, fault); context.getCurrentPipeline().pause(); context.getCurrentPipeline().handleFault(fault, context); context.getInPipeline().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); } } } };
public void invoke(MessageContext context) throws XFireFault { Boolean b = (Boolean) context.getProperty(DefaultEndpoint.SERVICE_HANDLERS_REGISTERED); if ((b == null || b.equals(Boolean.FALSE)) && context.getService() != null) { context.getInPipeline().addHandlers(context.getService().getInHandlers()); } if (context.getExchange().hasOutMessage()) { HandlerPipeline pipeline = new HandlerPipeline(context.getXFire().getOutPhases()); pipeline.addHandlers(context.getService().getOutHandlers()); pipeline.addHandlers(context.getXFire().getOutHandlers()); OutMessage msg = context.getExchange().getOutMessage(); pipeline.addHandlers(msg.getChannel().getTransport().getOutHandlers()); context.setOutPipeline(pipeline); } } }
/** * Assert that a service understands a particular header. If not, a fault is thrown. * * @param context * @param name * @throws XFireFault */ protected void assertUnderstandsHeader(MessageContext context, QName name) throws XFireFault { if (context.getInPipeline().understands(name)) return; if (context.getOutPipeline().understands(name)) return; // TODO: Check Out pipeline for understanding throw new XFireFault("Header {" + name.getLocalPart() + "}" + name.getNamespaceURI() + " was not undertsood by the service.", XFireFault.MUST_UNDERSTAND); } }
HandlerPipeline pipeline = new HandlerPipeline(context.getXFire().getInPhases()); pipeline.addHandlers(context.getXFire().getInHandlers()); pipeline.addHandlers(msg.getChannel().getTransport().getInHandlers()); pipeline.addHandlers(getInHandlers()); pipeline.addHandlers(context.getService().getInHandlers()); context.setProperty(SERVICE_HANDLERS_REGISTERED, Boolean.TRUE); pipeline.invoke(context); context.setProperty(DefaultFaultHandler.EXCEPTION, fault); pipeline.handleFault(fault, context);
context.setCurrentMessage(msg); HandlerPipeline outPipe = new HandlerPipeline(client.getXFire().getOutPhases()); outPipe.addHandlers(client.getXFire().getOutHandlers()); outPipe.addHandlers(client.getOutHandlers()); outPipe.addHandlers(client.getTransport().getOutHandlers()); outPipe.invoke(context);
/** * 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; }
public void invoke(MessageContext context) throws Exception { log.debug("Correlating context with ID " + context.getId()); Invocation invocation = correlator.correlate(context, calls); if (invocation == null) { log.info("No correlated invocation was found."); return; } if (context != invocation.getContext()) { context.getExchange().setOperation(invocation.getContext().getExchange().getOperation()); context.getExchange().setOutMessage(invocation.getContext().getExchange().getOutMessage()); } if (invocation != null) { log.debug("Found correlated context with ID " + context.getId()); context.getInPipeline().addHandler(new ClientReceiveHandler(invocation)); } }
log.debug("Invoking phase " + phase.getName()); List phaseHandlers = getPhaseHandlers(phase.getName()).getHandlers(); for (int i = 0; i < phaseHandlers.size(); i++ )