From 00d09e618e0bdd299d78d21c5980f76db9b810b1 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Wed, 3 Jan 2018 17:21:51 +0100 Subject: [PATCH] Use libimagentryutil::isa::Is in libimagentryannotation --- lib/entry/libimagentryannotation/Cargo.toml | 1 + .../libimagentryannotation/src/annotateable.rs | 16 +++++++++------- lib/entry/libimagentryannotation/src/error.rs | 1 + lib/entry/libimagentryannotation/src/lib.rs | 1 + 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/entry/libimagentryannotation/Cargo.toml b/lib/entry/libimagentryannotation/Cargo.toml index 1df5834f..83c48f7d 100644 --- a/lib/entry/libimagentryannotation/Cargo.toml +++ b/lib/entry/libimagentryannotation/Cargo.toml @@ -24,3 +24,4 @@ error-chain = "0.11" libimagstore = { version = "0.6.0", path = "../../../lib/core/libimagstore" } libimagerror = { version = "0.6.0", path = "../../../lib/core/libimagerror" } libimagentrylink = { version = "0.6.0", path = "../../../lib/entry/libimagentrylink" } +libimagentryutil = { version = "0.6.0", path = "../../../lib/entry/libimagentryutil" } diff --git a/lib/entry/libimagentryannotation/src/annotateable.rs b/lib/entry/libimagentryannotation/src/annotateable.rs index aa027720..3210f285 100644 --- a/lib/entry/libimagentryannotation/src/annotateable.rs +++ b/lib/entry/libimagentryannotation/src/annotateable.rs @@ -25,6 +25,8 @@ use libimagstore::store::Store; use libimagstore::storeid::IntoStoreId; use libimagstore::storeid::StoreIdIterator; use libimagentrylink::internal::InternalLinker; +use libimagentryutil::isa::Is; +use libimagentryutil::isa::IsKindHeaderPathProvider; use toml_query::read::TomlValueReadExt; use toml_query::insert::TomlValueInsertExt; @@ -43,6 +45,8 @@ pub trait Annotateable { fn is_annotation(&self) -> Result; } +provide_kindflag_path!(IsAnnotation, "annotation.is_annotation"); + impl Annotateable for Entry { /// Annotate an entry, returns the new entry which is used to annotate @@ -52,9 +56,10 @@ impl Annotateable for Entry { .map_err(From::from) .and_then(|mut anno| { { - let header = anno.get_header_mut(); - header.insert("annotation.is_annotation", Value::Boolean(true))?; - header.insert("annotation.name", Value::String(String::from(ann_name)))?; + let _ = anno.set_isflag::()?; + let _ = anno + .get_header_mut() + .insert("annotation.name", Value::String(String::from(ann_name)))?; } Ok(anno) }) @@ -96,10 +101,7 @@ impl Annotateable for Entry { } fn is_annotation(&self) -> Result { - self.get_header() - .read("annotation.is_annotation")? - .map(|val| val.as_bool().unwrap_or(false)) - .ok_or(AE::from_kind(AEK::HeaderTypeError)) + self.is::().map_err(From::from) } } diff --git a/lib/entry/libimagentryannotation/src/error.rs b/lib/entry/libimagentryannotation/src/error.rs index 8e250044..83204518 100644 --- a/lib/entry/libimagentryannotation/src/error.rs +++ b/lib/entry/libimagentryannotation/src/error.rs @@ -25,6 +25,7 @@ error_chain! { links { StoreError(::libimagstore::error::StoreError, ::libimagstore::error::StoreErrorKind); LinkError(::libimagentrylink::error::LinkError, ::libimagentrylink::error::LinkErrorKind); + EntryUtilError(::libimagentryutil::error::EntryUtilError, ::libimagentryutil::error::EntryUtilErrorKind); } foreign_links { diff --git a/lib/entry/libimagentryannotation/src/lib.rs b/lib/entry/libimagentryannotation/src/lib.rs index 3bc5ad48..36cc8af4 100644 --- a/lib/entry/libimagentryannotation/src/lib.rs +++ b/lib/entry/libimagentryannotation/src/lib.rs @@ -42,6 +42,7 @@ extern crate toml_query; #[macro_use] extern crate libimagstore; extern crate libimagerror; extern crate libimagentrylink; +#[macro_use] extern crate libimagentryutil; module_entry_path_mod!("annotations");