class FindingPackagingFormat {

    /** FPF is versioned. If the format changes, the version needs to be bumped. */
    private static final String FPF_VERSION = "1.2";
    private static final String FIELD_APPLICATION = "application";
    private static final String FIELD_VERSION = "version";
    private static final String FIELD_TIMESTAMP = "timestamp";
    private static final String FIELD_BASE_URL = "baseUrl";
    private static final String FIELD_UUID = "uuid";
    private static final String FIELD_DESCRIPTION = "description";
    private static final String FIELD_NAME = "name";
    private static final String FIELD_PURL = "purl";
    private static final String FIELD_CPE = "cpe";
    private static final String FIELD_META = "meta";
    private static final String FIELD_PROJECT = "project";
    private static final String FIELD_FINDINGS = "findings";

    private final JSONObject payload;

    public FindingPackagingFormat(final UUID projectUuid, final List<Finding> findings) {
        payload = initialize(projectUuid, findings);
    }

    public JSONObject getDocument() {
        return payload;
    }

    private JSONObject initialize(final UUID projectUuid, final List<Finding> findings) {<FILL_FUNCTION_BODY>}
}

        try (QueryManager qm = new QueryManager()) {
            final Project project = qm.getObjectByUuid(Project.class, projectUuid);
            final About about = new About();
            final ConfigProperty baseUrl = qm.getConfigProperty(GENERAL_BASE_URL.getGroupName(), GENERAL_BASE_URL.getPropertyName());

            /*
                Create a generic meta object containing basic Dependency-Track information
                This is useful for file-based parsing systems that needs to be able to
                identify what type of file it is, and what type of system generated it.
             */
            final JSONObject meta = new JSONObject();
            meta.put(FIELD_APPLICATION, about.getApplication());
            meta.put(FIELD_VERSION, about.getVersion());
            meta.put(FIELD_TIMESTAMP, DateUtil.toISO8601(new Date()));
            if (baseUrl != null && baseUrl.getPropertyValue() != null) {
                meta.put(FIELD_BASE_URL, baseUrl.getPropertyValue());
            }


            /*
                Findings are specific to a given project. This information is useful for
                systems outside of Dependency-Track so that they can perform mappings as
                well as not have to perform additional queries back to Dependency-Track
                to discover basic project information.
             */
            final JSONObject projectJson = new JSONObject();
            projectJson.put(FIELD_UUID, project.getUuid());
            projectJson.put(FIELD_NAME, project.getName());
            if (project.getVersion() != null) {
                projectJson.put(FIELD_VERSION, project.getVersion());
            }
            if (project.getDescription() != null) {
                projectJson.put(FIELD_DESCRIPTION, project.getDescription());
            }
            if (project.getPurl() != null) {
                projectJson.put(FIELD_PURL, project.getPurl());
            }
            if (project.getCpe() != null) {
                projectJson.put(FIELD_CPE, project.getCpe());
            }


            /*
                Add the meta and project objects along with the findings array
                to a root json object and return.
             */
            final JSONObject root = new JSONObject();
            root.put(FIELD_VERSION, FPF_VERSION);
            root.put(FIELD_META, meta);
            root.put(FIELD_PROJECT, projectJson);
            root.put(FIELD_FINDINGS, findings);
            return root;
        }
    
<no_super_class>