use of org.apache.axiom.om.OMNode in project webservices-axiom by apache.
the class TestCreateDefaultSOAPMessage method runTest.
@Override
protected void runTest() throws Throwable {
SOAPMessage message = soapFactory.createDefaultSOAPMessage();
SOAPEnvelope env = message.getSOAPEnvelope();
assertNotNull(env);
assertSame(env, message.getFirstOMChild());
assertNull(env.getNextOMSibling());
// Check correct SOAP version
assertEquals(spec.getEnvelopeNamespaceURI(), env.getNamespaceURI());
// Check the children
Iterator<OMNode> it = env.getChildren();
assertTrue(it.hasNext());
OMNode child = it.next();
assertTrue(child instanceof SOAPBody);
assertNull(((SOAPBody) child).getFirstOMChild());
assertFalse(it.hasNext());
}
use of org.apache.axiom.om.OMNode in project webservices-axiom by apache.
the class TestGetDefaultEnvelope method runTest.
@Override
protected void runTest() throws Throwable {
SOAPEnvelope env = soapFactory.getDefaultEnvelope();
// Check correct SOAP version
assertEquals(spec.getEnvelopeNamespaceURI(), env.getNamespaceURI());
// getDefaultEnvelope doesn't create a SOAPMessage/OMDocument
assertNull(env.getParent());
// Check the children
Iterator<OMNode> it = env.getChildren();
assertTrue(it.hasNext());
OMNode child = it.next();
assertTrue(child instanceof SOAPHeader);
assertNull(((SOAPHeader) child).getFirstOMChild());
child = it.next();
assertTrue(child instanceof SOAPBody);
assertNull(((SOAPBody) child).getFirstOMChild());
assertFalse(it.hasNext());
}
use of org.apache.axiom.om.OMNode in project webservices-axiom by apache.
the class TestAddHeaderBlock method runTest.
@Override
protected void runTest() throws Throwable {
SOAPEnvelope soapEnvelope = soapFactory.createSOAPEnvelope();
SOAPHeader soapHeader = soapFactory.createSOAPHeader(soapEnvelope);
OMNamespace namespace = soapFactory.createOMNamespace("http://www.example.org", "test");
SOAPHeaderBlock headerBlock1 = soapHeader.addHeaderBlock("echoOk1", namespace);
SOAPHeaderBlock headerBlock2 = soapHeader.addHeaderBlock("echoOk2", namespace);
Iterator<OMNode> iterator = soapHeader.getChildren();
assertSame(headerBlock1, iterator.next());
assertSame(soapHeader, headerBlock1.getParent());
assertNotNull("SOAP Header Test : - After calling addHeaderBlock method twice, getChildren method returns empty iterator", headerBlock1);
assertEquals("SOAP Header Test : - HeaderBlock1 local name mismatch", "echoOk1", headerBlock1.getLocalName());
assertEquals("SOAP Header Test : - HeaderBlock1 namespace uri mismatch", "http://www.example.org", headerBlock1.getNamespace().getNamespaceURI());
assertSame(headerBlock2, iterator.next());
assertSame(soapHeader, headerBlock2.getParent());
assertNotNull("SOAP Header Test : - After calling addHeaderBlock method twice, getChildren method returns an iterator with only one object", headerBlock2);
assertEquals("SOAP Header Test : - HeaderBlock2 local name mismatch", "echoOk2", headerBlock2.getLocalName());
assertEquals("SOAP Header Test : - HeaderBlock2 namespace uri mismatch", "http://www.example.org", headerBlock2.getNamespace().getNamespaceURI());
assertFalse("SOAP Header Test : - After calling addHeaderBlock method twice, getChildren method returns an iterator with more than two elements", iterator.hasNext());
}
use of org.apache.axiom.om.OMNode in project webservices-axiom by apache.
the class DigestGenerator method getDigest.
/**
* This method is an overloaded method for the digest generation for OMElement
*
* @param element
* @param digestAlgorithm
* @return Returns a byte array representing the calculated digest value
*/
public byte[] getDigest(OMElement element, String digestAlgorithm) throws OMException {
byte[] digest = new byte[0];
try {
MessageDigest md = MessageDigest.getInstance(digestAlgorithm);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
dos.writeInt(1);
dos.write(getExpandedName(element).getBytes("UnicodeBigUnmarked"));
dos.write((byte) 0);
dos.write((byte) 0);
Collection<OMAttribute> attrs = getAttributesWithoutNS(element);
dos.writeInt(attrs.size());
for (Iterator<OMAttribute> itr = attrs.iterator(); itr.hasNext(); ) {
dos.write(getDigest(itr.next(), digestAlgorithm));
}
OMNode node = element.getFirstOMChild();
// adjoining Texts are merged,
// there is no 0-length Text, and
// comment nodes are removed.
int length = 0;
for (Iterator<OMNode> itr = element.getChildren(); itr.hasNext(); ) {
OMNode child = itr.next();
if (child instanceof OMElement || child instanceof OMText || child instanceof OMProcessingInstruction) {
length++;
}
}
dos.writeInt(length);
while (node != null) {
dos.write(getDigest(node, digestAlgorithm));
node = node.getNextOMSibling();
}
dos.close();
md.update(baos.toByteArray());
digest = md.digest();
} catch (NoSuchAlgorithmException e) {
throw new OMException(e);
} catch (IOException e) {
throw new OMException(e);
}
return digest;
}
use of org.apache.axiom.om.OMNode in project webservices-axiom by apache.
the class DigestGenerator method getDigest.
/**
* This method is an overloaded method for the digest generation for OMDocument
*
* @param document
* @param digestAlgorithm
* @return Returns a byte array representing the calculated digest
*/
public byte[] getDigest(OMDocument document, String digestAlgorithm) throws OMException {
byte[] digest = new byte[0];
try {
MessageDigest md = MessageDigest.getInstance(digestAlgorithm);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
dos.writeInt(9);
Collection<OMNode> childNodes = getValidElements(document);
dos.writeInt(childNodes.size());
Iterator<OMNode> itr = childNodes.iterator();
while (itr.hasNext()) {
OMNode node = itr.next();
if (node.getType() == OMNode.PI_NODE)
dos.write(getDigest((OMProcessingInstruction) node, digestAlgorithm));
else if (node.getType() == OMNode.ELEMENT_NODE)
dos.write(getDigest((OMElement) node, digestAlgorithm));
}
dos.close();
md.update(baos.toByteArray());
digest = md.digest();
} catch (NoSuchAlgorithmException e) {
throw new OMException(e);
} catch (IOException e) {
throw new OMException(e);
}
return digest;
}
Aggregations