docs: public Event mapToEvent(Message message) {
          Event event = new Event();
          MessageInfo messageInfo = new MessageInfo();
          Originator originator = new Originator();
          boolean isRestMessage = isRestMessage(message);
  
          event.setMessageInfo(messageInfo);
          event.setOriginator(originator);
          String content = getPayload(message);
          event.setContent(content);
          handleContentLength(event);
          event.setEventType(null);
          Date date = new Date();
          event.setTimestamp(date);
  
  //        if (isRestMessage) {
  //            String queryString = (String) message.get(Message.QUERY_STRING);
  //            if (queryString == null && message.getExchange().getInMessage() != null) {
  //                queryString = (String) message.getExchange().getInMessage().get(Message.QUERY_STRING);
  //            }
  //            if (queryString != null && queryString.contains("_wadl")) {
  //                return null;
  //            }
  //        }
  
          messageInfo.setFlowId(FlowIdHelper.getFlowId(message));
          if (!isRestMessage) {
              messageInfo.setMessageId(getMessageId(message));
              ServiceInfo serviceInfo = message.getExchange().getBinding().getBindingInfo().getService();
              if (null != serviceInfo) {
                  String portTypeName = serviceInfo.getInterface().getName().toString();
                  messageInfo.setPortType(portTypeName);
                  messageInfo.setOperationName(getOperationName(message));
              }
              SoapBinding soapBinding = (SoapBinding) message.getExchange().getBinding();
              if (soapBinding.getBindingInfo() instanceof SoapBindingInfo) {
                  SoapBindingInfo soapBindingInfo = (SoapBindingInfo) soapBinding.getBindingInfo();
                  messageInfo.setTransportType(soapBindingInfo.getTransportURI());
              }
          } else {
              messageInfo.setTransportType("http://cxf.apache.org/transports/http");
              messageInfo.setPortType(message.getExchange().getEndpoint().getEndpointInfo().getName()
                      .toString());
              String opName = getRestOperationName(message);
              messageInfo.setOperationName(opName);
          }
  
          if (messageInfo.getTransportType() == null) {
              messageInfo.setTransportType("Unknown transport type");
          }
  
          // add custom properties from CXF properties
          if (null != message.getExchange().getEndpoint().get(EventFeature.SAM_PROPERTIES)) {
              Map<String, String> customProp =
                      (Map<String, String>) message.getExchange().getEndpoint().get(EventFeature.SAM_PROPERTIES);
              event.getCustomInfo().putAll(customProp);
          }
  
          String addr = message.getExchange().getEndpoint().getEndpointInfo().getAddress();
          if (null != addr) {
              event.getCustomInfo().put("address", addr);
          }
  
          String correlationId = CorrelationIdHelper.getCorrelationId(message);
          if (null != correlationId) {
              event.getCustomInfo().put("CorrelationID", correlationId);
          }
  
          try {
              InetAddress inetAddress = InetAddress.getLocalHost();
              originator.setIp(inetAddress.getHostAddress());
              originator.setHostname(inetAddress.getHostName());
          } catch (UnknownHostException e) {
              originator.setHostname("Unknown hostname");
              originator.setIp("Unknown ip address");
          }
          originator.setProcessId(Converter.getPID());
  
          if (isRestMessage) {
              //String queryString = (String) message.get(Message.QUERY_STRING);
              //if (null == queryString && null != message.getExchange().getInMessage()) {
              //    queryString = (String) message.getExchange().getInMessage().get(Message.QUERY_STRING);
              //}
              //if (null != queryString) {
              //    event.getCustomInfo().put("Query String", queryString);
              //}
  
              String accept = (String) message.get(Message.ACCEPT_CONTENT_TYPE);
              if (null != accept) {
                  event.getCustomInfo().put("Accept Type", accept);
              }
  
              //String httpMethod = (String) message.get(Message.HTTP_REQUEST_METHOD);
              //if (null != httpMethod) {
              //    event.getCustomInfo().put("HTTP Method", httpMethod);
              //}
  
              String contentType = (String) message.get(Message.CONTENT_TYPE);
              if (null != contentType) {
                  event.getCustomInfo().put("Content Type", contentType);
              }
  
              Integer responseCode = (Integer) message.get(Message.RESPONSE_CODE);
              if (null != responseCode) {
                  event.getCustomInfo().put("Response Code", responseCode.toString());
              }
          }
  
          SecurityContext sc = message.get(SecurityContext.class);
          if (sc != null && sc.getUserPrincipal() != null) {
              originator.setPrincipal(sc.getUserPrincipal().getName());
          }
  
          if (originator.getPrincipal() == null) {
              AuthorizationPolicy authPolicy = message.get(AuthorizationPolicy.class);
              if (authPolicy != null) {
                  originator.setPrincipal(authPolicy.getUserName());
              }
          }
  
          EventTypeEnum eventType = getEventType(message);
          event.setEventType(eventType);
  
          CustomInfo customInfo = CustomInfo.getOrCreateCustomInfo(message);
          // System.out.println("custom props: " + customInfo);
          event.getCustomInfo().putAll(customInfo);
  
          return event;
      }