public static FallbackBackupPolicy fromJson()

in services/library/src/main/java/com/google/cloud/pso/bq_snapshot_manager/entities/backup_policy/FallbackBackupPolicy.java [96:147]


    public static FallbackBackupPolicy fromJson(String jsonPolicy) throws JsonProcessingException {

        // parse json string for the "default_policy" node
        ObjectMapper mapper = new ObjectMapper();
        JsonNode root = mapper.readTree(jsonPolicy);

        // parse the top level json nodes

        JsonNode defaultPolicyNode = root.path("default_policy");
        if (defaultPolicyNode == null){
            throw new IllegalArgumentException("'default_policy' node is missing in the provided jsonPolicy");
        }

        JsonNode folderOverridesNode = root.path("folder_overrides");
        if (folderOverridesNode == null){
            throw new IllegalArgumentException("'folder_overrides' node is missing in the provided jsonPolicy");
        }

        JsonNode projectOverridesNode = root.path("project_overrides");
        if (projectOverridesNode == null){
            throw new IllegalArgumentException("'project_overrides' node is missing in the provided jsonPolicy");
        }

        JsonNode datasetOverridesNode = root.path("dataset_overrides");
        if (datasetOverridesNode == null){
            throw new IllegalArgumentException("'dataset_overrides' node is missing in the provided jsonPolicy");
        }

        JsonNode tableOverridesNode = root.path("table_overrides");
        if (tableOverridesNode == null){
            throw new IllegalArgumentException("'table_overrides' node is missing in the provided jsonPolicy");
        }

        // parse the nodes to corresponding java classes
        BackupPolicy defaultBackupPolicy = BackupPolicy.fromJson(defaultPolicyNode.toPrettyString());

        Map<String, BackupPolicy> folderOverridesPolicies = policiesFromJsonNode(folderOverridesNode);

        Map<String, BackupPolicy> projectOverridesPolicies = policiesFromJsonNode(projectOverridesNode);

        Map<String, BackupPolicy> datasetOverridesPolicies = policiesFromJsonNode(datasetOverridesNode);

        Map<String, BackupPolicy> tableOverridesPolicies = policiesFromJsonNode(tableOverridesNode);

        return new FallbackBackupPolicy(
                defaultBackupPolicy,
                folderOverridesPolicies,
                projectOverridesPolicies,
                datasetOverridesPolicies,
                tableOverridesPolicies
        );
    }