/** * Convenience method to extract metadata from an element. * * <p> * <wsam:InterfaceName xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata">...</wsam:ServiceName> * </p> * <p>or</p> * <p> * <wsa:PortType xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">...</wsa:ServiceName> * </p> * * @param omElement the <code>OMElement</code> that holds the metadata. */ public void fromOM(OMElement omElement) throws AxisFault { QName qname = omElement.getQName(); if (!wsamQName.equals(qname) && !wsawQName.equals(qname) && !subQName.equals(qname)) { throw new AxisFault("Unrecognized element."); } name = omElement.getTextAsQName(); }
/** * Convenience method to extract metadata from an element. * * <p> * <wsam:InterfaceName xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata">...</wsam:ServiceName> * </p> * <p>or</p> * <p> * <wsa:PortType xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">...</wsa:ServiceName> * </p> * * @param omElement the <code>OMElement</code> that holds the metadata. */ public void fromOM(OMElement omElement) throws AxisFault { QName qname = omElement.getQName(); if (!wsamQName.equals(qname) && !wsawQName.equals(qname) && !subQName.equals(qname)) { throw new AxisFault("Unrecognized element."); } name = omElement.getTextAsQName(); }
/** * Axiom is supposed to handle this properly however this method is buggy and doesn't work (whereas setting a QName as text * works). * * @param elmt * @return text qname */ public static QName getTextAsQName(OMElement elmt) { QName qname = elmt.getTextAsQName(); // The getTextAsQName is buggy, it sometimes return the full text without extracting namespace if (qname == null || qname.getNamespaceURI().length() == 0) { int colonIdx = elmt.getText().indexOf(":"); String localpart = elmt.getText().substring(colonIdx + 1, elmt.getText().length()); String prefix = elmt.getText().substring(0, colonIdx); String ns = elmt.findNamespaceURI(prefix).getNamespaceURI(); qname = new QName(ns, localpart, prefix); } return qname; }
/** * Convenience method to extract metadata from the ServiceName element. * * <p> * <wsam:ServiceName xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" EndpointName="...">...</wsam:ServiceName> * </p> * <p>or</p> * <p> * <wsa:ServiceName xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" PortName="...">...</wsa:ServiceName> * </p> * * @param omElement the <code>OMElement</code> that holds the metadata. */ public void fromOM(OMElement omElement) throws AxisFault { QName qname = omElement.getQName(); String attributeName = null; if (wsamQName.equals(qname) || wsawQName.equals(qname)) { attributeName = Final.WSA_SERVICE_NAME_ENDPOINT_NAME; } else if (subQName.equals(qname)) { attributeName = Submission.WSA_SERVICE_NAME_ENDPOINT_NAME; } else { throw new AxisFault("Unrecognized element."); } name = omElement.getTextAsQName(); endpointName = omElement.getAttributeValue(new QName(attributeName)); }
/** * Convenience method to extract metadata from the ServiceName element. * * <p> * <wsam:ServiceName xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" EndpointName="...">...</wsam:ServiceName> * </p> * <p>or</p> * <p> * <wsa:ServiceName xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" PortName="...">...</wsa:ServiceName> * </p> * * @param omElement the <code>OMElement</code> that holds the metadata. */ public void fromOM(OMElement omElement) throws AxisFault { QName qname = omElement.getQName(); String attributeName = null; if (wsamQName.equals(qname) || wsawQName.equals(qname)) { attributeName = Final.WSA_SERVICE_NAME_ENDPOINT_NAME; } else if (subQName.equals(qname)) { attributeName = Submission.WSA_SERVICE_NAME_ENDPOINT_NAME; } else { throw new AxisFault("Unrecognized element."); } name = omElement.getTextAsQName(); endpointName = omElement.getAttributeValue(new QName(attributeName)); }
/** * Get the current message object from OMElement * * @param element * @return */ public static GetCurrentMessage getCurrentMessageFromOM(OMElement element) throws WsnFault { if (element == null) { throw new WsnFault("Can not parse a null element"); } if (element.getQName() != WsnConstants.GET_CURRENT_QNAME) { throw new WsnFault("Invalid node : " + element.getQName()); } GetCurrentMessage result = null; OMElement topicElement = element .getFirstChildWithName(WstConstants.TOPIC_QNAME); if (topicElement != null) { result = new GetCurrentMessage(topicElement.getTextAsQName()); } return result; }
protected void handleFault(MessageContext msgContext, OutputStream out, AxisFault e) throws AxisFault { msgContext.setProperty(MessageContext.TRANSPORT_OUT, out); MessageContext faultContext = MessageContextBuilder.createFaultMessageContext(msgContext, e); // SOAP 1.2 specification mentions that we should send HTTP code 400 in a fault if the // fault code Sender HttpServletResponse response = (HttpServletResponse) msgContext.getProperty(HTTPConstants.MC_HTTP_SERVLETRESPONSE); if (response != null) { //TODO : Check for SOAP 1.2! SOAPFaultCode code = faultContext.getEnvelope().getBody().getFault().getCode(); OMElement valueElement = null; if (code != null) { valueElement = code.getFirstChildWithName(new QName( SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI, SOAP12Constants.SOAP_FAULT_VALUE_LOCAL_NAME)); } if (valueElement != null) { if (SOAP12Constants.FAULT_CODE_SENDER.equals(valueElement.getTextAsQName().getLocalPart()) && !msgContext.isDoingREST()) { response.setStatus(HttpServletResponse.SC_BAD_REQUEST); } } } AxisEngine.sendFault(faultContext); }
public Object fromOMElement(OMElement sequenceFault) throws OMException { if (sequenceFault == null) throw new OMException(SandeshaMessageHelper.getMessage( SandeshaMessageKeys.noFaultCodePart, null)); OMElement faultCodePart = sequenceFault .getFirstChildWithName(new QName(namespaceValue, Sandesha2Constants.WSRM_COMMON.FAULT_CODE)); if (faultCodePart == null) throw new OMException(SandeshaMessageHelper.getMessage( SandeshaMessageKeys.noFaultCode, sequenceFault.toString())); this.faultCode = faultCodePart.getTextAsQName(); OMElement detailPart = sequenceFault .getFirstChildWithName(new QName(namespaceValue, Sandesha2Constants.WSRM_COMMON.DETAIL)); if (detailPart != null) { detailOMElement = detailPart; OMElement identifier = detailPart .getFirstChildWithName(new QName(namespaceValue, Sandesha2Constants.WSRM_COMMON.IDENTIFIER)); if (identifier != null) { detail = identifier.getText(); } } return sequenceFault; }
protected void handleFault(MessageContext msgContext, OutputStream out, AxisFault e) throws AxisFault { msgContext.setProperty(MessageContext.TRANSPORT_OUT, out); MessageContext faultContext = MessageContextBuilder.createFaultMessageContext(msgContext, e); // SOAP 1.2 specification mentions that we should send HTTP code 400 in a fault if the // fault code Sender HttpServletResponse response = (HttpServletResponse) msgContext.getProperty(HTTPConstants.MC_HTTP_SERVLETRESPONSE); if (response != null) { //TODO : Check for SOAP 1.2! SOAPFaultCode code = faultContext.getEnvelope().getBody().getFault().getCode(); OMElement valueElement = null; if (code != null) { valueElement = code.getFirstChildWithName(new QName( SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI, SOAP12Constants.SOAP_FAULT_VALUE_LOCAL_NAME)); } if (valueElement != null) { if (SOAP12Constants.FAULT_CODE_SENDER.equals(valueElement.getTextAsQName().getLocalPart()) && !msgContext.isDoingREST()) { response.setStatus(HttpServletResponse.SC_BAD_REQUEST); } } } AxisEngine.sendFault(faultContext); }
|| org.apache.axis2.namespace.Constants.QNAME_FAULTCODE_SOAP12.equals(element.getQName())) { if (!codeFound) { soapFaultCode.setText(element.getTextAsQName()); codeFound = true; } else {
if (SOAP12Constants.FAULT_CODE_SENDER.equals(valueElement.getTextAsQName().getLocalPart()))