private List<SoapHeader> transformToCxfHeaders(Map<String, String> headers) { if (headers == null) { return emptyList(); } return headers.entrySet().stream() .map(header -> { try { return new SoapHeader(new QName(null, header.getKey()), stringToDomElement(header.getValue())); } catch (Exception e) { throw new BadRequestException("Cannot parse input header [" + header.getKey() + "]", e); } }) .collect(toList()); }
@Override public void handleMessage(Message message) { List<SoapHeader> headers = (ArrayList<SoapHeader>) message.get(SOAP_HEADER_KEY); // if the header doesn't exist and we have at least one header to access 'owner document' we can create and add our own MessageID header if(!messageIdHeaderExists(headers) && !headers.isEmpty()) { Element existingHeaderElement = (Element) headers.get(0).getObject(); // use the existing header element to create our own MessageID header with random UUID Element element = existingHeaderElement.getOwnerDocument().createElementNS(NAMESPACE_URI, QUALIFIED_NAME); element.appendChild(existingHeaderElement.getOwnerDocument().createTextNode("uuid:" + UUID.randomUUID().toString())); QName qname = new QName(NAMESPACE_URI, LOCAL_NAME); SoapHeader header = new SoapHeader(qname, element); // by default a SoapHeader is created with 'direction out' header.setDirection(Header.Direction.DIRECTION_IN); headers.add(header); } }
protected Header findSecurityHeader(SoapMessage message, boolean create) { for (Header h : message.getHeaders()) { QName n = h.getName(); if ("Security".equals(n.getLocalPart()) && (n.getNamespaceURI().equals(WSS4JConstants.WSSE_NS) || n.getNamespaceURI().equals(WSS4JConstants.WSSE11_NS))) { return h; } } if (!create) { return null; } Document doc = DOMUtils.getEmptyDocument(); Element el = doc.createElementNS(WSS4JConstants.WSSE_NS, "wsse:Security"); el.setAttributeNS(WSS4JConstants.XMLNS_NS, "xmlns:wsse", WSS4JConstants.WSSE_NS); SoapHeader sh = new SoapHeader(new QName(WSS4JConstants.WSSE_NS, "Security"), el); sh.setMustUnderstand(true); message.getHeaders().add(sh); return sh; }
protected Header findSecurityHeader(SoapMessage message, boolean create) { for (Header h : message.getHeaders()) { QName n = h.getName(); if ("Security".equals(n.getLocalPart()) && (n.getNamespaceURI().equals(WSS4JConstants.WSSE_NS) || n.getNamespaceURI().equals(WSS4JConstants.WSSE11_NS))) { return h; } } if (!create) { return null; } Document doc = DOMUtils.getEmptyDocument(); Element el = doc.createElementNS(WSS4JConstants.WSSE_NS, "wsse:Security"); el.setAttributeNS(WSS4JConstants.XMLNS_NS, "xmlns:wsse", WSS4JConstants.WSSE_NS); SoapHeader sh = new SoapHeader(new QName(WSS4JConstants.WSSE_NS, "Security"), el); sh.setMustUnderstand(true); message.getHeaders().add(sh); return sh; }
/** * Encodes an MAP as a SOAP header. * * @param message the message to store the headers on * @param value the value to encode * @param qname the QName for the header * @param clz the class * @param header the SOAP header element * @param marshaller the JAXB context to use */ protected <T> void encodeMAP(SoapMessage message, T value, QName qname, Class<T> clz, JAXBContext ctx, boolean mustUnderstand) throws JAXBException { JAXBDataBinding jaxbDataBinding = new JAXBDataBinding(ctx); SoapHeader h = new SoapHeader(qname, new JAXBElement<T>(qname, clz, value), jaxbDataBinding); h.setMustUnderstand(mustUnderstand); message.getHeaders().add(h); }
/** * Encodes an MAP as a SOAP header. * * @param message the message to store the headers on * @param value the value to encode * @param qname the QName for the header * @param clz the class * @param header the SOAP header element * @param marshaller the JAXB context to use */ protected <T> void encodeMAP(SoapMessage message, T value, QName qname, Class<T> clz, JAXBContext ctx, boolean mustUnderstand) throws JAXBException { JAXBDataBinding jaxbDataBinding = new JAXBDataBinding(ctx); SoapHeader h = new SoapHeader(qname, new JAXBElement<T>(qname, clz, value), jaxbDataBinding); h.setMustUnderstand(mustUnderstand); message.getHeaders().add(h); }
SoapHeader header = new SoapHeader(qname, element);
private void mustUnderstand(List<Header> headers, QName name) { Header header = getHeader(headers, name); if (header == null) { return; } if (header instanceof SoapHeader) { SoapHeader soapHeader = (SoapHeader) header; soapHeader.setMustUnderstand(true); return; } headers.remove(header); SoapHeader newHeader = new SoapHeader(name, header.getObject()); newHeader.setMustUnderstand(true); headers.add(newHeader); } }
@Override protected void buildHeaders(SequenceType seq, Collection<SequenceAcknowledgement> acks, Collection<AckRequestedType> reqs, boolean last, List<Header> headers) throws JAXBException { if (null != seq) { LOG.log(Level.FINE, "encoding sequence into RM header"); JAXBElement<SequenceType> element = RMUtils.getWSRMFactory().createSequence(seq); headers.add(new SoapHeader(element.getName(), element, getDataBinding(), true)); } if (null != acks) { LOG.log(Level.FINE, "encoding sequence acknowledgement(s) into RM header"); for (SequenceAcknowledgement ack : acks) { headers.add(new SoapHeader(new QName(getConstants().getWSRMNamespace(), RMConstants.SEQUENCE_ACK_NAME), ack, getDataBinding())); } } if (null != reqs) { LOG.log(Level.FINE, "encoding acknowledgement request(s) into RM header"); for (AckRequestedType req : reqs) { headers.add(new SoapHeader(new QName(getConstants().getWSRMNamespace(), RMConstants.ACK_REQUESTED_NAME), RMUtils.getWSRMFactory().createAckRequested(req), getDataBinding())); } } }
/** * According to the XDR option "Transmit Home Community Id": when the request POJO contains the target home * community ID, create a special SOAP header and copy the target home community ID into this header. */ protected static void injectTargetHomeCommunityId(Object client, SubmitObjectsRequest request) { String targetHomeCommunityId = null; try { EbXMLSlotList30 slotList = new EbXMLSlotList30(request.getRequestSlotList().getSlot()); targetHomeCommunityId = slotList.getSingleSlotValue(Vocabulary.SLOT_NAME_HOME_COMMUNITY_ID); } catch (NullPointerException e) { // nop } if (targetHomeCommunityId != null) { Document document = DomBuildersPool.use(DocumentBuilder::newDocument); Element homeCommunityIdElement = document.createElementNS(TARGET_HCID_NS, TARGET_HCID_LOCAL_PART); homeCommunityIdElement.setTextContent(targetHomeCommunityId); Element blockElement = document.createElementNS(TARGET_HCID_NS, TARGET_HCID_BLOCK_LOCAL_PART); //blockElement.setAttributeNS(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE, "role", "urn:ihe:iti:xd:id"); //blockElement.setAttributeNS(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE, "relay", "true"); blockElement.appendChild(homeCommunityIdElement); BindingProvider bindingProvider = (BindingProvider) client; Map<String, Object> requestContext = bindingProvider.getRequestContext(); List<Header> soapHeaders = HeaderUtils.getHeaders(requestContext, Header.HEADER_LIST, true, true, ArrayList::new); soapHeaders.add(new SoapHeader(TARGET_HCID_HEADER_NAME, blockElement)); } }
headers.add(new SoapHeader(element.getName(), element, getDataBinding(), true)); headers.add(new SoapHeader(new QName(getConstants().getWSRMNamespace(), RMConstants.SEQUENCE_ACK_NAME), VersionTransformer.convert200502wsa15(ack), getDataBinding())); LOG.log(Level.FINE, "encoding acknowledgement request(s) into RM header"); for (AckRequestedType req : reqs) { headers.add(new SoapHeader(new QName(getConstants().getWSRMNamespace(), RMConstants.ACK_REQUESTED_NAME), RMUtils.getWSRM200502WSA200508Factory()
headers.add(new SoapHeader(element.getName(), element, getDataBinding(), true)); headers.add(new SoapHeader(new QName(getConstants().getWSRMNamespace(), RMConstants.SEQUENCE_ACK_NAME), VersionTransformer.convert200502(ack), LOG.log(Level.FINE, "encoding acknowledgement request(s) into RM header"); for (AckRequestedType req : reqs) { headers.add(new SoapHeader(new QName(getConstants().getWSRMNamespace(), RMConstants.ACK_REQUESTED_NAME), RMUtils.getWSRM200502Factory()
SoapHeader sh = new SoapHeader(new QName(MULE_NS_URI, MULE_HEADER), mule_header); message.getHeaders().add(sh);
obj = p.getDataBinding().createReader(Node.class).read(elem); SoapHeader shead = new SoapHeader(new QName(elem.getNamespaceURI(), elem.getLocalName()), obj,
obj = p.getDataBinding().createReader(Node.class).read(elem); SoapHeader shead = new SoapHeader(new QName(elem.getNamespaceURI(), elem.getLocalName()), obj,
message.getHeaders().add(new SoapHeader(qname, document.getDocumentElement()));
private void addOutOfBoundHeader(PutLastTradedPricePortType portType, boolean invalid, boolean mu) { InvocationHandler handler = Proxy.getInvocationHandler(portType); BindingProvider bp = null; try { if (handler instanceof BindingProvider) { bp = (BindingProvider)handler; Map<String, Object> requestContext = bp.getRequestContext(); OutofBandHeader ob = new OutofBandHeader(); ob.setName("testOobHeader"); ob.setValue("testOobHeaderValue"); ob.setHdrAttribute(invalid ? "dontProcess" : "testHdrAttribute"); SoapHeader hdr = new SoapHeader( new QName(TEST_HDR_NS, TEST_HDR_REQUEST_ELEM), ob, new JAXBDataBinding(ob.getClass())); hdr.setMustUnderstand(mu); List<Header> holder = new ArrayList<>(); holder.add(hdr); //Add List of headerHolders to requestContext. requestContext.put(Header.HEADER_LIST, holder); } } catch (JAXBException ex) { //System.out.println("failed to insert header into request context :" + ex); } }
SoapHeader sheader = new SoapHeader(DOMUtils.getElementQName(hel), hel); message.getHeaders().add(sheader); hel = DOMUtils.getNextElement(hel);
SoapHeader shead = new SoapHeader(new QName(hel.getNamespaceURI(), hel.getLocalName()), obj, dataBinding); String mu = hel.getAttributeNS(soapVersion.getNamespace(),
SoapHeader shead = new SoapHeader(new QName(hel.getNamespaceURI(), hel.getLocalName()), obj, dataBinding); String mu = hel.getAttributeNS(soapVersion.getNamespace(),