public ReqT intercept()

in custos-services/custos-integration-services/custos-integration-services-commons/src/main/java/org/apache/custos/integration/services/commons/interceptors/LoggingInterceptor.java [53:103]


    public <ReqT> ReqT intercept(String method, Metadata headers, ReqT msg) {


        if (msg instanceof GeneratedMessageV3) {
            Map<Descriptors.FieldDescriptor, Object> fieldDescriptors = ((GeneratedMessageV3) msg).getAllFields();

            LogEvent.Builder logEventBuilder = LogEvent.newBuilder();
            LoggingConfigurationRequest.Builder loggingConfigurationBuilder =
                    LoggingConfigurationRequest.newBuilder();
            boolean tenantMatched = false;
            boolean clientMatched = false;

            for (Descriptors.FieldDescriptor descriptor : fieldDescriptors.keySet()) {

                if (descriptor.getName().equals("tenant_id") || descriptor.getName().equals("tenantId")) {
                    logEventBuilder.setTenantId((long) fieldDescriptors.get(descriptor));
                    loggingConfigurationBuilder.setTenantId((long) fieldDescriptors.get(descriptor));
                    tenantMatched = true;
                } else if (descriptor.getName().equals("client_id") || descriptor.getName().equals("clientId")) {
                    logEventBuilder.setClientId((String) fieldDescriptors.get(descriptor));
                    loggingConfigurationBuilder.setClientId((String) fieldDescriptors.get(descriptor));
                    clientMatched = true;
                } else if (descriptor.getName().equals("username") || descriptor.getName().equals("userId")) {
                    logEventBuilder.setUsername((String) fieldDescriptors.get(descriptor));
                }

                String servicename = headers.
                        get(Metadata.Key.of(Constants.SERVICE_NAME, Metadata.ASCII_STRING_MARSHALLER));
                String externaIP = headers.
                        get(Metadata.Key.of(Constants.X_FORWARDED_FOR, Metadata.ASCII_STRING_MARSHALLER));
                if (servicename != null){
                    logEventBuilder.setServiceName(servicename);
                }
                if (method!= null){
                    logEventBuilder.setEventType(method);
                }
                if (externaIP!= null){
                    logEventBuilder.setEventType(externaIP);
                }
                logEventBuilder.setCreatedTime(System.currentTimeMillis());
            }

            if (tenantMatched && clientMatched) {
                Status status = loggingClient.isLogEnabled(loggingConfigurationBuilder.build());
                if (status.getStatus()) {
                    loggingClient.addLogEventAsync(logEventBuilder.build());
                }
            }
        }
        return msg;
    }