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
);
}