in testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap12/builder/TestBuilder.java [55:391]
protected void runTest() throws Throwable {
String soap12Message =
"<env:Envelope xmlns:env=\"http://www.w3.org/2003/05/soap-envelope\">\n"
+ " <env:Header>\n"
+ " <test:echoOk xmlns:test=\"http://example.org/ts-tests\"\n"
+ " env:role=\"http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver\"\n"
+ " env:mustUnderstand=\"true\">\n"
+ " foo\n"
+ " </test:echoOk>\n"
+ " </env:Header>\n"
+ " <env:Body>\n"
+ " <env:Fault>\n"
+ " <env:Code>\n"
+ " <env:Value>env:Sender</env:Value>\n"
+ " <env:Subcode>\n"
+ " <env:Value>m:MessageTimeout</env:Value>\n"
+ " <env:Subcode>\n"
+ " <env:Value>m:MessageTimeout</env:Value>\n"
+ " </env:Subcode>\n"
+ " </env:Subcode>\n"
+ " </env:Code>\n"
+ " <env:Reason>\n"
+ " <env:Text>Sender Timeout</env:Text>\n"
+ " </env:Reason>\n"
+ " <env:Node>\n"
+ " http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver\n"
+ " </env:Node>\n"
+ " <env:Role>\n"
+ " ultimateReceiver\n"
+ " </env:Role>\n"
+ " <env:Detail xmlns:m=\"http:www.sample.org\">\n"
+ " Details of error\n"
+ " <m:MaxTime m:detail=\"This is only a test\">\n"
+ " P5M\n"
+ " </m:MaxTime>\n"
+ " <m:AveTime>\n"
+ " <m:Time>\n"
+ " P3M\n"
+ " </m:Time>\n"
+ " </m:AveTime>\n"
+ " </env:Detail>\n"
+ " </env:Fault>\n"
+ " </env:Body>\n"
+ "</env:Envelope>";
OMXMLParserWrapper soap12Builder =
OMXMLBuilderFactory.createSOAPModelBuilder(
metaFactory, new StringReader(soap12Message));
SOAPEnvelope soap12Envelope = (SOAPEnvelope) soap12Builder.getDocumentElement();
assertTrue(
"SOAP 1.2 :- envelope local name mismatch",
soap12Envelope.getLocalName().equals(SOAPConstants.SOAPENVELOPE_LOCAL_NAME));
assertTrue(
"SOAP 1.2 :- envelope namespace uri mismatch",
soap12Envelope
.getNamespace()
.getNamespaceURI()
.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI));
SOAPHeader header = soap12Envelope.getHeader();
assertTrue(
"SOAP 1.2 :- Header local name mismatch",
header.getLocalName().equals(SOAPConstants.HEADER_LOCAL_NAME));
assertTrue(
"SOAP 1.2 :- Header namespace uri mismatch",
header.getNamespace()
.getNamespaceURI()
.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI));
SOAPHeaderBlock headerBlock = (SOAPHeaderBlock) header.getFirstElement();
assertTrue(
"SOAP 1.2 :- Header block name mismatch",
headerBlock.getLocalName().equals("echoOk"));
assertTrue(
"SOAP 1.2 :- Header block name space uri mismatch",
headerBlock.getNamespace().getNamespaceURI().equals("http://example.org/ts-tests"));
assertEquals("SOAP 1.2 :- Header block text mismatch", headerBlock.getText().trim(), "foo");
// Attribute iteration is not in any guaranteed order.
// Use QNames to get the OMAttributes.
QName roleQName =
new QName(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI, SOAP12Constants.SOAP_ROLE);
QName mustUnderstandQName =
new QName(
SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI,
SOAP12Constants.ATTR_MUSTUNDERSTAND);
OMAttribute roleAttribute = headerBlock.getAttribute(roleQName);
OMAttribute mustUnderstandAttribute = headerBlock.getAttribute(mustUnderstandQName);
assertTrue("SOAP 1.2 :- Role attribute name not found", roleAttribute != null);
assertTrue(
"SOAP 1.2 :- Role value mismatch",
roleAttribute
.getAttributeValue()
.trim()
.equals(
SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI
+ "/"
+ SOAP12Constants.SOAP_ROLE
+ "/"
+ "ultimateReceiver"));
assertTrue(
"SOAP 1.2 :- Mustunderstand attribute not found", mustUnderstandAttribute != null);
assertTrue(
"SOAP 1.2 :- Mustunderstand value mismatch",
mustUnderstandAttribute
.getAttributeValue()
.equals(SOAPConstants.ATTR_MUSTUNDERSTAND_TRUE));
SOAPBody body = soap12Envelope.getBody();
assertTrue(
"SOAP 1.2 :- Body local name mismatch",
body.getLocalName().equals(SOAPConstants.BODY_LOCAL_NAME));
assertTrue(
"SOAP 1.2 :- Body namespace uri mismatch",
body.getNamespace()
.getNamespaceURI()
.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI));
SOAPFault fault = body.getFault();
assertTrue(
"SOAP 1.2 :- Fault local name mismatch",
fault.getLocalName().equals(SOAPConstants.SOAPFAULT_LOCAL_NAME));
assertTrue(
"SOAP 1.2 :- Fault namespace uri mismatch",
fault.getNamespace()
.getNamespaceURI()
.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI));
Iterator<OMNode> iteratorInFault = fault.getChildren();
iteratorInFault.next();
SOAPFaultCode code = (SOAPFaultCode) iteratorInFault.next();
assertTrue(
"SOAP 1.2 :- Fault code local name mismatch",
code.getLocalName().equals(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME));
assertTrue(
"SOAP 1.2 :- Fault code namespace uri mismatch",
code.getNamespace()
.getNamespaceURI()
.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI));
Iterator<OMNode> iteratorInCode = code.getChildren();
iteratorInCode.next();
SOAPFaultValue value1 = (SOAPFaultValue) iteratorInCode.next();
assertTrue(
"SOAP 1.2 :- Fault code value local name mismatch",
value1.getLocalName().equals(SOAP12Constants.SOAP_FAULT_VALUE_LOCAL_NAME));
assertTrue(
"SOAP 1.2 :- Fault code namespace uri mismatch",
value1.getNamespace()
.getNamespaceURI()
.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI));
assertTrue("SOAP 1.2 :- Value1 text mismatch", value1.getText().equals("env:Sender"));
QName valueQName = value1.getTextAsQName();
assertTrue(
"SOAP 1.2 :- Fault code value's qname local name mismatch",
valueQName.getLocalPart().equals("Sender"));
assertTrue(
"SOAP 1.2 :- Fault code value's qname namespace uri mismatch",
valueQName.getNamespaceURI().equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI));
iteratorInCode.next();
SOAPFaultSubCode subCode1 = (SOAPFaultSubCode) iteratorInCode.next();
assertTrue(
"SOAP 1.2 :- Fault sub code local name mismatch",
subCode1.getLocalName().equals(SOAP12Constants.SOAP_FAULT_SUB_CODE_LOCAL_NAME));
assertTrue(
"SOAP 1.2 :- Fault subcode namespace uri mismatch",
subCode1.getNamespace()
.getNamespaceURI()
.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI));
Iterator<OMNode> iteratorInSubCode1 = subCode1.getChildren();
iteratorInSubCode1.next();
SOAPFaultValue value2 = (SOAPFaultValue) iteratorInSubCode1.next();
assertTrue(
"SOAP 1.2 :- Fault code value local name mismatch",
value2.getLocalName().equals(SOAP12Constants.SOAP_FAULT_VALUE_LOCAL_NAME));
assertTrue(
"SOAP 1.2 :- Fault code namespace uri mismatch",
value2.getNamespace()
.getNamespaceURI()
.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI));
assertTrue("SOAP 1.2 :- Value2 text mismatch", value2.getText().equals("m:MessageTimeout"));
iteratorInSubCode1.next();
SOAPFaultSubCode subCode2 = (SOAPFaultSubCode) iteratorInSubCode1.next();
assertTrue(
"SOAP 1.2 :- Fault sub code local name mismatch",
subCode2.getLocalName().equals(SOAP12Constants.SOAP_FAULT_SUB_CODE_LOCAL_NAME));
assertTrue(
"SOAP 1.2 :- Fault subcode namespace uri mismatch",
subCode2.getNamespace()
.getNamespaceURI()
.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI));
Iterator<OMNode> iteratorInSubCode2 = subCode2.getChildren();
iteratorInSubCode2.next();
SOAPFaultValue value3 = (SOAPFaultValue) iteratorInSubCode2.next();
assertTrue(
"SOAP 1.2 :- Fault code value local name mismatch",
value3.getLocalName().equals(SOAP12Constants.SOAP_FAULT_VALUE_LOCAL_NAME));
assertTrue(
"SOAP 1.2 :- Fault code namespace uri mismatch",
value3.getNamespace()
.getNamespaceURI()
.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI));
assertTrue("SOAP 1.2 :- Value2 text mismatch", value3.getText().equals("m:MessageTimeout"));
iteratorInFault.next();
SOAPFaultReason reason = (SOAPFaultReason) iteratorInFault.next();
assertTrue(
"SOAP 1.2 :- Fault reason local name mismatch",
reason.getLocalName().equals(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME));
assertTrue(
"SOAP 1.2 :- Fault reason namespace uri mismatch",
reason.getNamespace()
.getNamespaceURI()
.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI));
Iterator<OMNode> iteratorInReason = reason.getChildren();
iteratorInReason.next();
SOAPFaultText text = (SOAPFaultText) iteratorInReason.next();
assertTrue(
"SOAP 1.2 :- Fault text local name mismatch",
text.getLocalName().equals(SOAP12Constants.SOAP_FAULT_TEXT_LOCAL_NAME));
assertTrue(
"SOAP 1.2 :- Text namespace uri mismatch",
text.getNamespace()
.getNamespaceURI()
.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI));
assertTrue("SOAP 1.2 :- Text value mismatch", text.getText().equals("Sender Timeout"));
iteratorInFault.next();
SOAPFaultNode node = (SOAPFaultNode) iteratorInFault.next();
assertTrue(
"SOAP 1.2 :- Fault node local name mismatch",
node.getLocalName().equals(SOAP12Constants.SOAP_FAULT_NODE_LOCAL_NAME));
assertTrue(
"SOAP 1.2 :- Fault node namespace uri mismatch",
node.getNamespace()
.getNamespaceURI()
.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI));
assertTrue(
"SOAP 1.2 :- Node value mismatch",
node.getText()
.trim()
.equals("http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver"));
iteratorInFault.next();
SOAPFaultRole role = (SOAPFaultRole) iteratorInFault.next();
assertTrue(
"SOAP 1.2 :- Fault role local name mismatch",
role.getLocalName().equals(SOAP12Constants.SOAP_FAULT_ROLE_LOCAL_NAME));
assertTrue(
"SOAP 1.2 :- Fault role namespace uri mismatch",
role.getNamespace()
.getNamespaceURI()
.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI));
assertTrue(
"SOAP 1.2 :- Role value mismatch",
role.getText().trim().equals("ultimateReceiver"));
iteratorInFault.next();
SOAPFaultDetail detail = (SOAPFaultDetail) iteratorInFault.next();
assertTrue(
"SOAP 1.2 :- Fault detail local name mismatch",
detail.getLocalName().equals(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME));
assertTrue(
"SOAP 1.2 :- Fault detail namespace uri mismatch",
detail.getNamespace()
.getNamespaceURI()
.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI));
assertTrue(
"SOAP 1.2 :- Text in detail mismatch",
detail.getText().trim().equals("Details of error"));
Iterator<OMNode> iteratorInDetail = detail.getChildren();
iteratorInDetail.next();
OMElement element1 = (OMElement) iteratorInDetail.next();
assertTrue(
"SOAP 1.2 :- MaxTime element mismatch", element1.getLocalName().equals("MaxTime"));
assertTrue(
"SOAP 1.2 :- MaxTime element namespace mismatch",
element1.getNamespace().getNamespaceURI().equals("http:www.sample.org"));
assertTrue(
"SOAP 1.2 :- Text value in MaxTime element mismatch",
element1.getText().trim().equals("P5M"));
Iterator<OMAttribute> attributeIterator = element1.getAllAttributes();
OMAttribute attributeInMaxTime = attributeIterator.next();
assertTrue(
"SOAP 1.2 :- Attribute local name mismatch",
attributeInMaxTime.getLocalName().equals("detail"));
assertTrue(
"SOAP 1.2 :- Attribute namespace mismatch",
attributeInMaxTime.getNamespace().getNamespaceURI().equals("http:www.sample.org"));
assertTrue(
"SOAP 1.2 :- Attribute value mismatch",
attributeInMaxTime.getAttributeValue().trim().equals("This is only a test"));
iteratorInDetail.next();
OMElement element2 = (OMElement) iteratorInDetail.next();
assertTrue(
"SOAP 1.2 :- AveTime element mismatch", element2.getLocalName().equals("AveTime"));
assertTrue(
"SOAP 1.2 :- AveTime element namespace mismatch",
element2.getNamespace().getNamespaceURI().equals("http:www.sample.org"));
Iterator<OMNode> iteratorInAveTimeElement = element2.getChildren();
iteratorInAveTimeElement.next();
OMElement element21 = (OMElement) iteratorInAveTimeElement.next();
assertTrue("SOAP 1.2 :- Time element mismatch", element21.getLocalName().equals("Time"));
assertTrue(
"SOAP 1.2 :- Time element namespace mismatch",
element21.getNamespace().getNamespaceURI().equals("http:www.sample.org"));
assertTrue(
"SOAP 1.2 :- Text value in Time element mismatch",
element21.getText().trim().equals("P3M"));
soap12Builder.close();
}