public static final void setMissingElementFaultOnExchange(final Exchange exchange, final String missingElement) throws MessagingException { final StringBuilder faultMessage = new StringBuilder(); faultMessage.append("<tns:missingElementFault xmlns:tns='"); faultMessage.append(FileTransferConstants.FILETRANSFER_SERVICE_NS); faultMessage.append("'><tns:element>"); faultMessage.append(missingElement); faultMessage.append("</tns:element></tns:missingElementFault>"); final Fault fault = exchange.createFault(); fault.setContent(SourceUtil.createSource(faultMessage.toString())); exchange.setFault(fault); }
public void sendFault(MessageExchange exchange, Fault fault, HttpServletRequest request, HttpServletResponse response) throws Exception { addResponseHeaders(exchange, request, response); response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); XMLStreamReader reader = transformer.toXMLStreamReader(fault.getContent()); OutputStream encodingStream = getResponseEncodingStream(request.getHeader(HttpHeaders.ACCEPT_ENCODING), response.getOutputStream()); XMLStreamWriter writer = transformer.getOutputFactory().createXMLStreamWriter(encodingStream); XMLStreamHelper.copy(reader, writer); writer.close(); encodingStream.close(); }
private void processFault(MessageExchange exchange, HttpServletRequest request, HttpServletResponse response) throws Exception { SoapFault fault = new SoapFault( (QName) exchange.getFault().getProperty(JBIMarshaler.SOAP_FAULT_CODE), (QName) exchange.getFault().getProperty(JBIMarshaler.SOAP_FAULT_SUBCODE), (String) exchange.getFault().getProperty(JBIMarshaler.SOAP_FAULT_REASON), (URI) exchange.getFault().getProperty(JBIMarshaler.SOAP_FAULT_NODE), (URI) exchange.getFault().getProperty(JBIMarshaler.SOAP_FAULT_ROLE), exchange.getFault().getContent()); sendFault(fault, request, response); }
state.messageType = "fault"; if (showMessageContent) { if (fault.getContent() != null) { state.content = createString(fault.getContent()); } catch (Exception e) { state.content = "<monitoring-error>Error occured " fault.setContent(createSource(state.content)); } catch (MessagingException e) { e.printStackTrace();
throw xchng.getError(); content = ((InOut)xchng).getFault().getContent(); normalizedMessageProps = ((InOut)xchng).getFault().getPropertyNames();
public Message createFault(MessageExchange exchange, Fault fault, Session session, JmsContext context) throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); PhaseInterceptorChain chain = new PhaseInterceptorChain(); chain.add(new AttachmentsOutInterceptor()); chain.add(new StaxOutInterceptor()); chain.add(new BodyOutInterceptor()); org.apache.servicemix.soap.api.Message msg = new MessageImpl(); msg.setContent(Source.class, fault.getContent()); msg.setContent(OutputStream.class, baos); for (String attId : (Set<String>) fault.getAttachmentNames()) { msg. getAttachments().put(attId, fault.getAttachment(attId)); } chain.doIntercept(msg); TextMessage text = session.createTextMessage(baos.toString()); if (msg.get(org.apache.servicemix.soap.api.Message.CONTENT_TYPE) != null) { text.setStringProperty(CONTENT_TYPE_PROPERTY, (String) msg.get(org.apache.servicemix.soap.api.Message.CONTENT_TYPE)); } text.setBooleanProperty(FAULT_JMS_PROPERTY, true); if (isCopyProperties()) { copyPropertiesFromNM(fault, text); } return text; }
exchange.setFault(fault); fault.setContent(new StringSource(out.toString(charSet))); XFireFault xFault = (XFireFault) ctx.getExchange().getFaultMessage().getBody(); fault.setProperty(SOAP_FAULT_CODE, xFault.getFaultCode()); fault.setProperty(SOAP_FAULT_REASON, xFault.getReason()); fault.setProperty(SOAP_FAULT_ROLE, xFault.getRole()); fault.setProperty(SOAP_FAULT_SUBCODE, xFault.getSubCode()); } else { String charSet = ctx.getOutMessage().getEncoding();
soapHelper.onAnswer(context); Fault fault = exchange.createFault(); fault.setProperty(JbiConstants.PROTOCOL_HEADERS, getHeaders(method)); soapHelper.getJBIMarshaler().toNMS(fault, soapMessage); exchange.setFault(fault);
state.messageType = "fault"; if (showMessageContent) { if (fault.getContent() != null) { state.content = createString(fault.getContent()); } catch (Exception e) { state.content = "<monitoring-error>Error occured " fault.setContent(createSource(state.content)); } catch (MessagingException e) { e.printStackTrace();
throw xchng.getError(); content = ((InOut)xchng).getFault().getContent(); normalizedMessageProps = ((InOut)xchng).getFault().getPropertyNames();
public static void setIOFaultOnExchange(Exchange exchange, String ioMessage) throws MessagingException { final StringBuffer faultMessage = new StringBuffer(); faultMessage.append("<tns:ioFault xmlns:tns='"); faultMessage.append(exchange.getOperation().getNamespaceURI()); faultMessage.append("'><tns:message>"); faultMessage.append(ioMessage); faultMessage.append("</tns:message></tns:ioFault>"); Fault fault = exchange.createFault(); fault.setContent(SourceUtil.createSource(faultMessage.toString())); exchange.setFault(fault); }
@Converter public Source convertFaultExceptionToSource(FaultException e) { return e.getFault().getContent(); }
public Message createFault(MessageExchange exchange, Fault fault, Session session, JmsContext context) throws Exception { org.apache.servicemix.soap.api.Message in = ((Context) context).msg; org.apache.servicemix.soap.api.Message msg = binding.createMessage(in); ByteArrayOutputStream baos = new ByteArrayOutputStream(); msg.setContent(OutputStream.class, baos); msg.setContent(MessageExchange.class, exchange); msg.setContent(NormalizedMessage.class, fault); msg.put(SoapVersion.class, in.get(SoapVersion.class)); msg.put(JbiConstants.USE_JBI_WRAPPER, useJbiWrapper); InterceptorChain phase = getChain(Phase.ServerOutFault); QName code = (QName) fault.getProperty("org.apache.servicemix.soap.fault.code"); String reason = (String) fault.getProperty("org.apache.servicemix.soap.fault.reason"); SoapFault soapFault = new SoapFault(code, reason, null, null, fault.getContent()); msg.setContent(Exception.class, soapFault); phase.doIntercept(msg); return session.createTextMessage(baos.toString()); }
public static void setMissingElementFaultOnExchange(Exchange exchange, String missingElement) throws MessagingException { final StringBuffer faultMessage = new StringBuffer(); faultMessage.append("<tns:missingElementFault xmlns:tns='"); faultMessage.append(exchange.getOperation().getNamespaceURI()); faultMessage.append("'><tns:element>"); faultMessage.append(missingElement); faultMessage.append("</tns:element></tns:missingElementFault>"); Fault fault = exchange.createFault(); fault.setContent(SourceUtil.createSource(faultMessage.toString())); exchange.setFault(fault); } }
public Fault toFaultType(javax.jbi.messaging.Fault jbiFlt, Collection<Fault> faults) throws MessageTranslationException { Element el = parse(jbiFlt.getContent()); QName elQname = new QName(el.getNamespaceURI(),el.getLocalName()); for (Fault f : faults) { if (f.getMessage() == null || f.getMessage().getParts().size() != 1) continue; javax.wsdl.Part pdef = (Part) f.getMessage().getParts().values().iterator().next(); if (pdef.getElementName() == null) continue; if (pdef.getElementName().equals(elQname)) return f; } return null; }
public void sendFault(MessageExchange exchange, Fault fault, HttpServletRequest request, HttpServletResponse response) throws Exception { addResponseHeaders(exchange, request, response); // the content type is specific to this marshaler, depending of the used SOAP version if (soapVersion.equals("1.1")) { response.setContentType("text/xml"); } else { response.setContentType("application/soap+xml"); } response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); Message in = (Message) request.getAttribute(Message.class.getName()); Message msg = binding.createMessage(in); OutputStream encodingStream = getResponseEncodingStream(request.getHeader(HttpHeaders.CONTENT_ENCODING), response.getOutputStream()); msg.setContent(OutputStream.class, encodingStream); msg.setContent(MessageExchange.class, exchange); msg.setContent(NormalizedMessage.class, fault); msg.put(SoapVersion.class, in.get(SoapVersion.class)); msg.put(JbiConstants.USE_JBI_WRAPPER, useJbiWrapper); InterceptorChain phase = getChain(Phase.ServerOutFault); QName code = (QName) fault.getProperty("org.apache.servicemix.soap.fault.code"); String reason = (String) fault.getProperty("org.apache.servicemix.soap.fault.reason"); SoapFault soapFault = new SoapFault(code, reason, null, null, fault.getContent()); msg.setContent(Exception.class, soapFault); phase.doIntercept(msg); encodingStream.close(); }
/** * TODO : create the fault from its WSDL description. * * @param exchange * @param ioMessage * @throws MessagingException */ public static final void setIOFaultOnExchange(final Exchange exchange, final String ioMessage) throws MessagingException { final StringBuilder faultMessage = new StringBuilder(); faultMessage.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); faultMessage.append("<tns:ioFault xmlns:tns=\""); faultMessage.append(FileTransferConstants.FILETRANSFER_SERVICE_NS); faultMessage.append("\"><tns:message>"); faultMessage.append(ioMessage); faultMessage.append("</tns:message></tns:ioFault>"); final Fault fault = exchange.createFault(); // Create a source in UTF-8 format fault.setContent(SourceUtil.createSource(faultMessage.toString(), StandardCharsets.UTF_8)); exchange.setFault(fault); }
@Override protected void processInOnly(MessageExchange exchange, NormalizedMessage in) throws Exception { NormalizedMessage out = exchange.createMessage(); Fault fault = exchange.createFault(); this.startValidation(exchange, in, out, fault); if (fault.getContent() != null) { throw new RuntimeException(sourceTransformer.contentToString(fault)); } }
protected Message fromNMSResponse(MessageExchange exchange, Context ctx, Session session) throws Exception { Message response = null; if (exchange.getStatus() == ExchangeStatus.ERROR) { // marshal error Exception e = exchange.getError(); if (e == null) { e = new Exception("Unkown error"); } response = endpoint.getMarshaler().toJMS(e, session); } else if (exchange.getStatus() == ExchangeStatus.ACTIVE) { // check for fault Fault jbiFault = exchange.getFault(); if (jbiFault != null) { // convert fault to SOAP message SoapFault fault = new SoapFault(SoapFault.RECEIVER, null, null, null, jbiFault.getContent()); SoapMessage soapFault = soapHelper.onFault(ctx, fault); Map headers = (Map) jbiFault.getProperty(JbiConstants.PROTOCOL_HEADERS); response = endpoint.getMarshaler().toJMS(soapFault, headers, session); } else { NormalizedMessage outMsg = exchange.getMessage("out"); if (outMsg != null) { SoapMessage out = soapHelper.onReply(ctx, outMsg); Map headers = (Map) outMsg.getProperty(JbiConstants.PROTOCOL_HEADERS); response = endpoint.getMarshaler().toJMS(out, headers, session); } } } return response; }
@Override public void setReplyInJBIExchange(final Exchange jbiExchange) throws MessagingException { final Fault businessFault = jbiExchange.createFault(); businessFault.setContent(this.payload); jbiExchange.setFault(businessFault); }