Search in sources :

Example 16 with SOAPHeaderBlock

use of org.apache.axiom.soap.SOAPHeaderBlock in project webservices-axiom by apache.

the class TestExamineAllHeaderBlocksWithParser method runTest.

@Override
protected void runTest(SOAPEnvelope envelope) throws Throwable {
    Iterator<SOAPHeaderBlock> iterator = envelope.getHeader().examineAllHeaderBlocks();
    iterator.hasNext();
    SOAPHeaderBlock headerBlock = iterator.next();
    assertEquals("MessageID", headerBlock.getLocalName());
    assertTrue(iterator.hasNext());
    headerBlock = iterator.next();
    assertEquals("ReplyTo", headerBlock.getLocalName());
    assertTrue(iterator.hasNext());
    headerBlock = iterator.next();
    assertEquals("To", headerBlock.getLocalName());
    assertTrue(iterator.hasNext());
    headerBlock = iterator.next();
    assertEquals("Action", headerBlock.getLocalName());
    assertFalse(iterator.hasNext());
}
Also used : SOAPHeaderBlock(org.apache.axiom.soap.SOAPHeaderBlock)

Example 17 with SOAPHeaderBlock

use of org.apache.axiom.soap.SOAPHeaderBlock in project webservices-axiom by apache.

the class ElementHelper method toSOAPHeaderBlock.

/**
     * This is a method to convert regular OMElements to SOAPHeaderBlocks.
     * 
     * @param omElement
     * @param factory
     * @return TODO
     * @throws Exception
     */
public static SOAPHeaderBlock toSOAPHeaderBlock(OMElement omElement, SOAPFactory factory) throws Exception {
    if (omElement instanceof SOAPHeaderBlock)
        return (SOAPHeaderBlock) omElement;
    QName name = omElement.getQName();
    String localName = name.getLocalPart();
    OMNamespace namespace = factory.createOMNamespace(name.getNamespaceURI(), name.getPrefix());
    MemoryBlob blob = Blobs.createMemoryBlob();
    OutputStream out = blob.getOutputStream();
    omElement.serialize(out);
    out.close();
    BlobOMDataSource ds = new BlobOMDataSource(blob, "utf-8");
    SOAPHeaderBlock block = factory.createSOAPHeaderBlock(localName, namespace, ds);
    return block;
}
Also used : OMNamespace(org.apache.axiom.om.OMNamespace) BlobOMDataSource(org.apache.axiom.om.ds.BlobOMDataSource) MemoryBlob(org.apache.axiom.blob.MemoryBlob) QName(javax.xml.namespace.QName) OutputStream(java.io.OutputStream) SOAPHeaderBlock(org.apache.axiom.soap.SOAPHeaderBlock)

Example 18 with SOAPHeaderBlock

use of org.apache.axiom.soap.SOAPHeaderBlock in project webservices-axiom by apache.

the class TestRegisterCustomBuilder method runTest.

@Override
protected void runTest() throws Throwable {
    SOAPModelBuilder builder = SOAPSampleSet.WSA.getMessage(spec).getAdapter(SOAPSampleAdapter.class).getBuilder(metaFactory);
    ((CustomBuilderSupport) builder).registerCustomBuilder(new CustomBuilder.Selector() {

        @Override
        public boolean accepts(OMContainer parent, int depth, String namespaceURI, String localName) {
            return depth == 3 && namespaceURI.equals("http://www.w3.org/2005/08/addressing") && localName.equals("To");
        }
    }, new BlobOMDataSourceCustomBuilder(MemoryBlob.FACTORY, "utf-8"));
    SOAPHeader header = builder.getSOAPEnvelope().getHeader();
    ArrayList al = header.getHeaderBlocksWithNSURI("http://www.w3.org/2005/08/addressing");
    assertEquals(al.size(), 4);
    for (int i = 0; i < al.size(); i++) {
        SOAPHeaderBlock shb = (SOAPHeaderBlock) al.get(i);
        if ("To".equals(shb.getLocalName())) {
            assertNotNull(shb.getDataSource());
        }
    }
}
Also used : ArrayList(java.util.ArrayList) CustomBuilderSupport(org.apache.axiom.om.ds.custombuilder.CustomBuilderSupport) SOAPHeaderBlock(org.apache.axiom.soap.SOAPHeaderBlock) BlobOMDataSourceCustomBuilder(org.apache.axiom.om.ds.custombuilder.BlobOMDataSourceCustomBuilder) CustomBuilder(org.apache.axiom.om.ds.custombuilder.CustomBuilder) SOAPSampleAdapter(org.apache.axiom.ts.soap.SOAPSampleAdapter) SOAPModelBuilder(org.apache.axiom.soap.SOAPModelBuilder) BlobOMDataSourceCustomBuilder(org.apache.axiom.om.ds.custombuilder.BlobOMDataSourceCustomBuilder) OMContainer(org.apache.axiom.om.OMContainer) SOAPHeader(org.apache.axiom.soap.SOAPHeader)

Example 19 with SOAPHeaderBlock

use of org.apache.axiom.soap.SOAPHeaderBlock in project webservices-axiom by apache.

the class TestBuilder method runTest.

@Override
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();
}
Also used : SOAPFaultCode(org.apache.axiom.soap.SOAPFaultCode) SOAPFaultRole(org.apache.axiom.soap.SOAPFaultRole) QName(javax.xml.namespace.QName) SOAPFaultReason(org.apache.axiom.soap.SOAPFaultReason) SOAPFaultValue(org.apache.axiom.soap.SOAPFaultValue) SOAPFaultDetail(org.apache.axiom.soap.SOAPFaultDetail) SOAPHeaderBlock(org.apache.axiom.soap.SOAPHeaderBlock) OMElement(org.apache.axiom.om.OMElement) SOAPEnvelope(org.apache.axiom.soap.SOAPEnvelope) SOAPFaultText(org.apache.axiom.soap.SOAPFaultText) OMNode(org.apache.axiom.om.OMNode) SOAPFaultSubCode(org.apache.axiom.soap.SOAPFaultSubCode) SOAPBody(org.apache.axiom.soap.SOAPBody) StringReader(java.io.StringReader) SOAPFault(org.apache.axiom.soap.SOAPFault) OMXMLParserWrapper(org.apache.axiom.om.OMXMLParserWrapper) OMAttribute(org.apache.axiom.om.OMAttribute) SOAPHeader(org.apache.axiom.soap.SOAPHeader) SOAPFaultNode(org.apache.axiom.soap.SOAPFaultNode)

Example 20 with SOAPHeaderBlock

use of org.apache.axiom.soap.SOAPHeaderBlock in project webservices-axiom by apache.

the class TestExamineAllHeaderBlocks method runTest.

@Override
protected void runTest() throws Throwable {
    SOAPHeader header = soapFactory.createSOAPHeader();
    // Add header blocks using DOM
    Element domHeader = (Element) header;
    Document document = domHeader.getOwnerDocument();
    Element headerBlock1 = document.createElementNS("urn:test", "p:h1");
    headerBlock1.setAttributeNS(spec.getEnvelopeNamespaceURI(), "S:mustUnderstand", "1");
    headerBlock1.setTextContent("test");
    Element headerBlock2 = document.createElementNS("urn:test", "p:h2");
    headerBlock2.appendChild(document.createElementNS(null, "test"));
    domHeader.appendChild(headerBlock1);
    domHeader.appendChild(headerBlock2);
    // Use the Axiom API to iterate over the header blocks
    Iterator<SOAPHeaderBlock> it = header.examineAllHeaderBlocks();
    assertThat(it.hasNext()).isTrue();
    SOAPHeaderBlock headerBlock = it.next();
    assertThat(headerBlock.getQName()).isEqualTo(new QName("urn:test", "h1"));
    assertThat(headerBlock.getMustUnderstand()).isTrue();
    assertThat(headerBlock.getText()).isEqualTo("test");
    assertThat(it.hasNext()).isTrue();
    headerBlock = it.next();
    assertThat(headerBlock.getQName()).isEqualTo(new QName("urn:test", "h2"));
    assertThat(headerBlock.getFirstOMChild()).isInstanceOf(OMElement.class);
    assertThat(it.hasNext()).isFalse();
}
Also used : QName(javax.xml.namespace.QName) OMElement(org.apache.axiom.om.OMElement) Element(org.w3c.dom.Element) SOAPHeaderBlock(org.apache.axiom.soap.SOAPHeaderBlock) Document(org.w3c.dom.Document) SOAPHeader(org.apache.axiom.soap.SOAPHeader)

Aggregations

SOAPHeaderBlock (org.apache.axiom.soap.SOAPHeaderBlock)40 SOAPHeader (org.apache.axiom.soap.SOAPHeader)22 QName (javax.xml.namespace.QName)15 OMNamespace (org.apache.axiom.om.OMNamespace)13 SOAPEnvelope (org.apache.axiom.soap.SOAPEnvelope)12 OMElement (org.apache.axiom.om.OMElement)8 OMAttribute (org.apache.axiom.om.OMAttribute)4 OMNode (org.apache.axiom.om.OMNode)4 SOAPBody (org.apache.axiom.soap.SOAPBody)4 SOAPProcessingException (org.apache.axiom.soap.SOAPProcessingException)4 BooleanAttributeAccessor (org.apache.axiom.ts.soap.BooleanAttributeAccessor)4 SOAPFault (org.apache.axiom.soap.SOAPFault)3 SOAPFaultDetail (org.apache.axiom.soap.SOAPFaultDetail)3 StringReader (java.io.StringReader)2 XMLStreamReader (javax.xml.stream.XMLStreamReader)2 OMSourcedElement (org.apache.axiom.om.OMSourcedElement)2 OMXMLParserWrapper (org.apache.axiom.om.OMXMLParserWrapper)2 BlobOMDataSource (org.apache.axiom.om.ds.BlobOMDataSource)2 SOAPCloneOptions (org.apache.axiom.soap.SOAPCloneOptions)2 SOAPFaultCode (org.apache.axiom.soap.SOAPFaultCode)2