public BytesArray generateMessage()

in mr/src/main/java/org/elasticsearch/hadoop/util/ecs/MessageTemplate.java [59:154]


    public BytesArray generateMessage(String ts, String message, String exceptionType, String exceptionMessage, String rawEvent) {
        Assert.hasText(ts, "Missing " + FieldNames.FIELD_TIMESTAMP + " value for ECS template.");
        Assert.hasText(message, "Missing " + FieldNames.FIELD_MESSAGE + " value for ECS template.");
        Assert.hasText(exceptionType, "Missing " + FieldNames.FIELD_ERROR_CODE + " value for ECS template.");
        Assert.hasText(exceptionMessage, "Missing " + FieldNames.FIELD_ERROR_MESSAGE + " value for ECS template.");
        Assert.hasText(rawEvent, "Missing " + FieldNames.FIELD_EVENT_RAW + " value for ECS template.");

        FastByteArrayOutputStream outputStream = new FastByteArrayOutputStream();
        JacksonJsonGenerator generator = new JacksonJsonGenerator(outputStream);
        generator.usePrettyPrint();

        generator.writeBeginObject();
        {
            // TS
            generator.writeFieldName(FieldNames.FIELD_TIMESTAMP).writeString(ts);

            // Tags
            if (tags != null && !tags.isEmpty()) {
                generator.writeFieldName(FieldNames.FIELD_TAGS).writeBeginArray();
                for (String tag : tags) {
                    generator.writeString(tag);
                }
                generator.writeEndArray();
            }

            // Labels
            if (labels != null && !labels.isEmpty()) {
                generator.writeFieldName(FieldNames.FIELD_LABELS).writeBeginObject();
                for (Map.Entry<String, String> label : labels.entrySet()) {
                    generator.writeFieldName(label.getKey()).writeString(label.getValue());
                }
                generator.writeEndObject();
            }

            // Message
            generator.writeFieldName(FieldNames.FIELD_MESSAGE).writeString(message);

            // Host
            if (host != null && host.hasData()) {
                generator.writeFieldName(FieldNames.FIELD_HOST).writeBeginObject();
                {
                    // Host info
                    writeNullable(generator, FieldNames.FIELD_HOST_NAME, host.getName());
                    writeNullable(generator, FieldNames.FIELD_HOST_IP, host.getIp());
                    writeNullable(generator, FieldNames.FIELD_HOST_ARCHITECTURE, host.getArchitecture());

                    // OS block
                    if (host.getOsName() != null || host.getOsVersion() != null) {
                        generator.writeFieldName(FieldNames.FIELD_HOST_OS).writeBeginObject();
                        {
                            writeNullable(generator, FieldNames.FIELD_HOST_OS_NAME, host.getOsName());
                            writeNullable(generator, FieldNames.FIELD_HOST_OS_VERSION, host.getOsVersion());
                        }
                        generator.writeEndObject();
                    }

                    // TZ
                    if (host.getTimezoneOffsetSec() != null) {
                        generator.writeFieldName(FieldNames.FIELD_HOST_TIMEZONE).writeBeginObject();
                        {
                            generator.writeFieldName(FieldNames.FIELD_HOST_TIMEZONE_OFFSET).writeBeginObject();
                            {
                                generator.writeFieldName(FieldNames.FIELD_HOST_TIMEZONE_OFFSET_SEC)
                                        .writeNumber(host.getTimezoneOffsetSec());
                            }
                            generator.writeEndObject();
                        }
                        generator.writeEndObject();
                    }
                }
                generator.writeEndObject();
            }

            // Error
            generator.writeFieldName(FieldNames.FIELD_ERROR).writeBeginObject();
            {
                generator.writeFieldName(FieldNames.FIELD_ERROR_CODE).writeString(exceptionType);
                generator.writeFieldName(FieldNames.FIELD_ERROR_MESSAGE).writeString(exceptionMessage);
            }
            generator.writeEndObject();

            // Event
            generator.writeFieldName(FieldNames.FIELD_EVENT).writeBeginObject();
            {
                generator.writeFieldName(FieldNames.FIELD_EVENT_CATEGORY).writeString(eventCategory);
                generator.writeFieldName(FieldNames.FIELD_EVENT_TYPE).writeString(eventType);
                generator.writeFieldName(FieldNames.FIELD_EVENT_RAW).writeString(rawEvent);
                generator.writeFieldName(FieldNames.FIELD_EVENT_VERSION).writeString(schema.getVersion());
            }
            generator.writeEndObject();
        }
        generator.writeEndObject();

        generator.close();
        return outputStream.bytes();
    }