@Override protected void populateUserDefinedHeader(String headerName, Object headerValue, SoapMessage target) { SoapHeader soapHeader = target.getSoapHeader(); if (headerValue instanceof String) { QName qname = QNameUtils.parseQNameString(headerName); soapHeader.addAttribute(qname, (String) headerValue); } else if (headerValue instanceof Source) { Result result = soapHeader.getResult(); try { this.transformerHelper.transform((Source) headerValue, result); } catch (TransformerException e) { throw new SoapHeaderException( "Could not transform source [" + headerValue + "] to result [" + result + "]", e); } } }
/** * Get the default QName from local part. * @param localPart * @return */ private QName getDefaultQName(String localPart) { if (StringUtils.hasText(defaultNamespaceUri)) { return new QName(defaultNamespaceUri, localPart, defaultPrefix); } else { throw new SoapHeaderException("Failed to add SOAP header '" + localPart + "', " + "because neither valid QName nor default namespace-uri is set!"); } }
throw new SoapHeaderException("Failed to add SOAP header '" + headerEntry.getKey() + "', " + "because of invalid QName");