/**
  * Modify the given request XML.
  *
  * @param \BeSimple\SoapCommon\SoapRequest $request SOAP request
  *
  * @return void
  */
 public function filterRequest(CommonSoapRequest $request)
 {
     // get \DOMDocument from SOAP request
     $dom = $request->getContentDocument();
     // create FilterHelper
     $filterHelper = new FilterHelper($dom);
     // add the neccessary namespaces
     $filterHelper->addNamespace(Helper::PFX_WSA, Helper::NS_WSA);
     $action = $filterHelper->createElement(Helper::NS_WSA, 'Action', $request->getAction());
     $filterHelper->addHeaderElement($action);
     $to = $filterHelper->createElement(Helper::NS_WSA, 'To', $request->getLocation());
     $filterHelper->addHeaderElement($to);
     if (null !== $this->faultTo) {
         $faultTo = $filterHelper->createElement(Helper::NS_WSA, 'FaultTo');
         $filterHelper->addHeaderElement($faultTo);
         $address = $filterHelper->createElement(Helper::NS_WSA, 'Address', $this->faultTo);
         $faultTo->appendChild($address);
     }
     if (null !== $this->from) {
         $from = $filterHelper->createElement(Helper::NS_WSA, 'From');
         $filterHelper->addHeaderElement($from);
         $address = $filterHelper->createElement(Helper::NS_WSA, 'Address', $this->from);
         $from->appendChild($address);
     }
     if (null !== $this->messageId) {
         $messageId = $filterHelper->createElement(Helper::NS_WSA, 'MessageID', $this->messageId);
         $filterHelper->addHeaderElement($messageId);
     }
     if (null !== $this->relatesTo) {
         $relatesTo = $filterHelper->createElement(Helper::NS_WSA, 'RelatesTo', $this->relatesTo);
         if (null !== $this->relatesToRelationshipType) {
             $filterHelper->setAttribute($relatesTo, Helper::NS_WSA, 'RelationshipType', $this->relatesToRelationshipType);
         }
         $filterHelper->addHeaderElement($relatesTo);
     }
     if (null !== $this->replyTo) {
         $replyTo = $filterHelper->createElement(Helper::NS_WSA, 'ReplyTo');
         $filterHelper->addHeaderElement($replyTo);
         $address = $filterHelper->createElement(Helper::NS_WSA, 'Address', $this->replyTo);
         $replyTo->appendChild($address);
     }
     foreach ($this->referenceParametersSet as $rp) {
         $filterHelper->addNamespace($rp['pfx'], $rp['ns']);
         $parameter = $filterHelper->createElement($rp['ns'], $rp['parameter'], $rp['value']);
         $filterHelper->setAttribute($parameter, Helper::NS_WSA, 'IsReferenceParameter', 'true');
         $filterHelper->addHeaderElement($parameter);
     }
 }