Skip to content

Commit 8b12825

Browse files
committed
Digital Twin Graph
1 parent e32c6d7 commit 8b12825

File tree

2 files changed

+47
-29
lines changed

2 files changed

+47
-29
lines changed

core/module/digital_twin_graph/src/digital_twin_graph_impl.rs

+20
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,10 @@ impl DigitalTwinGraph for DigitalTwinGraphImpl {
240240
let find_request = request.into_inner();
241241
let model_id = find_request.model_id;
242242

243+
if model_id.is_empty() {
244+
return Err(tonic::Status::invalid_argument("Model id is required"));
245+
}
246+
243247
debug!("Received a find request for model id {model_id}");
244248

245249
// Retrieve the provider details.
@@ -334,6 +338,12 @@ impl DigitalTwinGraph for DigitalTwinGraphImpl {
334338
let instance_id = get_request.instance_id;
335339
let member_path = get_request.member_path;
336340

341+
if instance_id.is_empty() {
342+
return Err(tonic::Status::invalid_argument("Model id is required"));
343+
}
344+
345+
// Note: The member path is optional.
346+
337347
debug!("Received a get request for instance id {instance_id}");
338348

339349
// Retrieve the provider details.
@@ -416,6 +426,16 @@ impl DigitalTwinGraph for DigitalTwinGraphImpl {
416426
let member_path = invoke_request.member_path;
417427
let request_payload = invoke_request.request_payload;
418428

429+
if instance_id.is_empty() {
430+
return Err(tonic::Status::invalid_argument("Instance id is required"));
431+
}
432+
433+
if member_path.is_empty() {
434+
return Err(tonic::Status::invalid_argument("Member path is required"));
435+
}
436+
437+
// Note: The request payload is optional.
438+
419439
debug!("Received an invoke request for instance id {instance_id}");
420440

421441
// Retrieve the provider details.

core/module/digital_twin_registry/src/digital_twin_registry_impl.rs

+27-29
Original file line numberDiff line numberDiff line change
@@ -109,15 +109,13 @@ impl DigitalTwinRegistry for DigitalTwinRegistryImpl {
109109
let request_inner = request.into_inner();
110110

111111
for entity_access_info in &request_inner.entity_access_info_list {
112-
self.register_entity(entity_access_info.clone()).map_err(|e| {
113-
Status::internal(format!(
114-
"Failed to register the entity with instance id: {}, error: {}",
115-
entity_access_info.instance_id, e
116-
))
117-
})?;
112+
self.register_entity(&entity_access_info)?;
113+
118114
info!(
119-
"Registered the entity with model id: {} and instance id: {}",
120-
entity_access_info.model_id, entity_access_info.instance_id
115+
"Registered the entity with provider id: {} instance id: {} model id: {}",
116+
entity_access_info.provider_id,
117+
entity_access_info.instance_id,
118+
entity_access_info.model_id
121119
);
122120
}
123121

@@ -134,33 +132,33 @@ impl DigitalTwinRegistryImpl {
134132
///
135133
/// # Arguments
136134
/// * `entity` - The entity.
137-
fn register_entity(&self, entity_access_info: EntityAccessInfo) -> Result<(), String> {
138-
// This block controls the lifetime of the lock.
139-
{
140-
if entity_access_info.provider_id.is_empty() {
141-
return Err("Provider id cannot be empty".to_string());
142-
}
135+
fn register_entity(&self, entity_access_info: &EntityAccessInfo) -> Result<(), Status> {
136+
if entity_access_info.provider_id.is_empty() {
137+
return Err(Status::invalid_argument("Provider id is required"));
138+
}
143139

144-
if entity_access_info.model_id.is_empty() {
145-
return Err("Model id cannot be empty".to_string());
146-
}
140+
if entity_access_info.model_id.is_empty() {
141+
return Err(Status::invalid_argument("Model id is required"));
142+
}
147143

148-
if entity_access_info.instance_id.is_empty() {
149-
return Err("Instance id cannot be empty".to_string());
150-
}
144+
if entity_access_info.instance_id.is_empty() {
145+
return Err(Status::invalid_argument("Instance id is required"));
146+
}
151147

152-
if entity_access_info.protocol.is_empty() {
153-
return Err("Protocol cannot be empty".to_string());
154-
}
148+
if entity_access_info.protocol.is_empty() {
149+
return Err(Status::invalid_argument("Protocol is required"));
150+
}
155151

156-
if entity_access_info.uri.is_empty() {
157-
return Err("Uri cannot be empty".to_string());
158-
}
152+
if entity_access_info.uri.is_empty() {
153+
return Err(Status::invalid_argument("Uri is required"));
154+
}
159155

160-
if entity_access_info.operations.is_empty() {
161-
return Err("Operations cannot be empty".to_string());
162-
}
156+
if entity_access_info.operations.is_empty() {
157+
return Err(Status::invalid_argument("Operations is required"));
158+
}
163159

160+
// This block controls the lifetime of the lock.
161+
{
164162
// Note: the context is optional.
165163

166164
let mut lock: RwLockWriteGuard<HashMap<String, Vec<EntityAccessInfo>>> =

0 commit comments

Comments
 (0)