Skip to content

Commit 7fa3a3b

Browse files
Desktop: OneNote importer: Handle the case where an entity GUID is missing (#13789)
1 parent fed2438 commit 7fa3a3b

2 files changed

Lines changed: 14 additions & 8 deletions

File tree

packages/onenote-converter/parser/src/fsshttpb_onestore/object_space.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use crate::fsshttpb_onestore::revision_role::RevisionRole;
77
use crate::onestore;
88
use crate::shared::cell_id::CellId;
99
use crate::shared::exguid::ExGuid;
10-
use parser_utils::errors::{ErrorKind, Result};
10+
use parser_utils::errors::Result;
1111
use std::collections::HashMap;
1212

1313
pub(crate) type GroupData<'a> = HashMap<(ExGuid, u64), &'a ObjectGroupData>;
@@ -59,11 +59,14 @@ impl<'b> ObjectSpace {
5959
let object_space_id = cell_id.1;
6060

6161
let cell_manifest_id = ObjectSpace::find_cell_manifest_id(mapping.id, packaging)
62-
.ok_or_else(|| ErrorKind::MalformedOneStoreData("cell manifest id not found".into()))?;
62+
.ok_or_else(|| parser_error!(MalformedOneStoreData, "cell manifest id not found"))?;
6363
let revision_manifest_id = storage_index
6464
.find_revision_mapping_id(cell_manifest_id)
6565
.ok_or_else(|| {
66-
ErrorKind::MalformedOneStoreData("no revision manifest id found".into())
66+
parser_error!(
67+
MalformedOneStoreData,
68+
"No revision manifest id found. (Unable to find revision?)."
69+
)
6770
})?;
6871

6972
let mut objects = HashMap::new();

packages/onenote-converter/parser/src/one/property_set/section_node.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ use crate::one::property_set::PropertySetId;
77
use crate::onestore::object::Object;
88
use crate::shared::exguid::ExGuid;
99
use crate::shared::guid::Guid;
10-
use parser_utils::errors::{ErrorKind, Result};
10+
use parser_utils::errors::Result;
11+
use parser_utils::log_warn;
1112

1213
/// A section.
1314
///
@@ -18,6 +19,7 @@ use parser_utils::errors::{ErrorKind, Result};
1819
#[allow(dead_code)]
1920
pub(crate) struct Data {
2021
//pub(crate) context_id: ExGuid, // Removed -- but may be necessary
22+
/// Used for creating links to sections. If not present, defaults to `Guid::nil`.
2123
pub(crate) entity_guid: Guid,
2224
pub(crate) page_series: Vec<ExGuid>,
2325
pub(crate) created_at: Timestamp,
@@ -32,13 +34,14 @@ pub(crate) fn parse(object: Rc<Object>) -> Result<Data> {
3234

3335
let object = object.as_ref();
3436
let entity_guid = simple::parse_guid(PropertyType::NotebookManagementEntityGuid, object)?
35-
.ok_or_else(|| ErrorKind::MalformedOneNoteFileData("section has no guid".into()))?;
37+
.unwrap_or_else(|| {
38+
log_warn!("Section: Missing entity GUID");
39+
Guid::nil()
40+
});
3641
let page_series =
3742
ObjectReference::parse_vec(PropertyType::ElementChildNodes, object)?.unwrap_or_default();
3843
let created_at = Timestamp::parse(PropertyType::TopologyCreationTimeStamp, object)?
39-
.ok_or_else(|| {
40-
ErrorKind::MalformedOneNoteFileData("section has no creation timestamp".into())
41-
})?;
44+
.ok_or_else(|| parser_error!(MalformedOneNoteData, "Section has no creation timestamp"))?;
4245

4346
let data = Data {
4447
//context_id,

0 commit comments

Comments
 (0)