reactive_graph_std_connector/behaviour/relation/complex_connector/
validator.rs1use reactive_graph_behaviour_model_api::behaviour_validator;
2use reactive_graph_behaviour_model_api::prelude::*;
3use reactive_graph_behaviour_model_impl::RelationPropertyValidator;
4use reactive_graph_graph::prelude::*;
5use reactive_graph_reactive_model_impl::ReactiveRelation;
6use reactive_graph_std_connector_model::ConnectorProperties::INBOUND_PROPERTY_NAME;
7use reactive_graph_std_connector_model::ConnectorProperties::OUTBOUND_PROPERTY_NAME;
8
9behaviour_validator!(ComplexConnectorValidator, RelationInstanceId, ReactiveRelation);
10
11impl BehaviourPropertyValidator<RelationInstanceId, ReactiveRelation> for ComplexConnectorValidator {
12 fn validate_properties(&self) -> Result<(), BehaviourPropertyInvalid> {
13 self.validate_property(OUTBOUND_PROPERTY_NAME.as_ref())?;
14 self.validate_property(INBOUND_PROPERTY_NAME.as_ref())?;
15 let outbound_property_name = self
17 .reactive_instance
18 .as_string(OUTBOUND_PROPERTY_NAME.as_ref())
19 .ok_or(BehaviourPropertyInvalid::PropertyMissing(OUTBOUND_PROPERTY_NAME.to_string()))?;
20 self.validate_outbound_property(&outbound_property_name)?;
21 let inbound_property_name = self
22 .reactive_instance
23 .as_string(OUTBOUND_PROPERTY_NAME.as_ref())
24 .ok_or(BehaviourPropertyInvalid::PropertyMissing(OUTBOUND_PROPERTY_NAME.to_string()))?;
25 self.validate_inbound_property(&inbound_property_name)?;
26 Ok(())
27 }
28}
29
30impl RelationPropertyValidator for ComplexConnectorValidator {}