reactive_graph_plugin_service_impl/
context.rs1use std::sync::Arc;
2
3use reactive_graph_plugin_api::CommandManager;
4use reactive_graph_plugin_api::ComponentImportExportManager;
5use reactive_graph_plugin_api::ComponentManager;
6use reactive_graph_plugin_api::ComponentProviderRegistry;
7use reactive_graph_plugin_api::ConfigManager;
8use reactive_graph_plugin_api::EntityBehaviourRegistry;
9use reactive_graph_plugin_api::EntityComponentBehaviourRegistry;
10use reactive_graph_plugin_api::EntityInstanceManager;
11use reactive_graph_plugin_api::EntityTypeImportExportManager;
12use reactive_graph_plugin_api::EntityTypeManager;
13use reactive_graph_plugin_api::EntityTypeProviderRegistry;
14use reactive_graph_plugin_api::FlowInstanceManager;
15use reactive_graph_plugin_api::FlowTypeImportExportManager;
16use reactive_graph_plugin_api::FlowTypeManager;
17use reactive_graph_plugin_api::FlowTypeProviderRegistry;
18use reactive_graph_plugin_api::GraphQLQueryService;
19use reactive_graph_plugin_api::PluginContext;
20use reactive_graph_plugin_api::RelationBehaviourRegistry;
21use reactive_graph_plugin_api::RelationComponentBehaviourRegistry;
22use reactive_graph_plugin_api::RelationInstanceManager;
23use reactive_graph_plugin_api::RelationTypeImportExportManager;
24use reactive_graph_plugin_api::RelationTypeManager;
25use reactive_graph_plugin_api::RelationTypeProviderRegistry;
26use reactive_graph_plugin_api::TypeSystemEventManager;
27use reactive_graph_plugin_api::WebResourceManager;
28
29#[derive(Clone)]
30pub struct PluginContextImpl {
31 component_manager: Arc<dyn ComponentManager + Send + Sync>,
32 component_import_export_manager: Arc<dyn ComponentImportExportManager + Send + Sync>,
33 component_provider_registry: Arc<dyn ComponentProviderRegistry + Send + Sync>,
34 entity_type_manager: Arc<dyn EntityTypeManager + Send + Sync>,
35 entity_type_import_export_manager: Arc<dyn EntityTypeImportExportManager + Send + Sync>,
36 entity_type_provider_registry: Arc<dyn EntityTypeProviderRegistry + Send + Sync>,
37 relation_type_manager: Arc<dyn RelationTypeManager + Send + Sync>,
38 relation_type_import_export_manager: Arc<dyn RelationTypeImportExportManager + Send + Sync>,
39 relation_type_provider_registry: Arc<dyn RelationTypeProviderRegistry + Send + Sync>,
40 flow_type_manager: Arc<dyn FlowTypeManager + Send + Sync>,
41 flow_type_import_export_manager: Arc<dyn FlowTypeImportExportManager + Send + Sync>,
42 flow_type_provider_registry: Arc<dyn FlowTypeProviderRegistry + Send + Sync>,
43 type_system_event_manager: Arc<dyn TypeSystemEventManager + Send + Sync>,
44 entity_instance_manager: Arc<dyn EntityInstanceManager + Send + Sync>,
45 relation_instance_manager: Arc<dyn RelationInstanceManager + Send + Sync>,
46 flow_instance_manager: Arc<dyn FlowInstanceManager + Send + Sync>,
47 entity_behaviour_registry: Arc<dyn EntityBehaviourRegistry + Send + Sync>,
48 entity_component_behaviour_registry: Arc<dyn EntityComponentBehaviourRegistry + Send + Sync>,
49 relation_behaviour_registry: Arc<dyn RelationBehaviourRegistry + Send + Sync>,
50 relation_component_behaviour_registry: Arc<dyn RelationComponentBehaviourRegistry + Send + Sync>,
51 config_manager: Arc<dyn ConfigManager + Send + Sync>,
52 graphql_query_service: Arc<dyn GraphQLQueryService + Send + Sync>,
53 web_resource_manager: Arc<dyn WebResourceManager + Send + Sync>,
54 command_manager: Arc<dyn CommandManager + Send + Sync>,
55}
56
57impl PluginContextImpl {
58 #[allow(clippy::too_many_arguments)]
59 pub fn new(
60 component_manager: Arc<dyn ComponentManager + Send + Sync>,
61 component_import_export_manager: Arc<dyn ComponentImportExportManager + Send + Sync>,
62 component_provider_registry: Arc<dyn ComponentProviderRegistry + Send + Sync>,
63 entity_type_manager: Arc<dyn EntityTypeManager + Send + Sync>,
64 entity_type_import_export_manager: Arc<dyn EntityTypeImportExportManager + Send + Sync>,
65 entity_type_provider_registry: Arc<dyn EntityTypeProviderRegistry + Send + Sync>,
66 relation_type_manager: Arc<dyn RelationTypeManager + Send + Sync>,
67 relation_type_import_export_manager: Arc<dyn RelationTypeImportExportManager + Send + Sync>,
68 relation_type_provider_registry: Arc<dyn RelationTypeProviderRegistry + Send + Sync>,
69 flow_type_manager: Arc<dyn FlowTypeManager + Send + Sync>,
70 flow_type_import_export_manager: Arc<dyn FlowTypeImportExportManager + Send + Sync>,
71 flow_type_provider_registry: Arc<dyn FlowTypeProviderRegistry + Send + Sync>,
72 type_system_event_manager: Arc<dyn TypeSystemEventManager + Send + Sync>,
73 entity_instance_manager: Arc<dyn EntityInstanceManager + Send + Sync>,
74 relation_instance_manager: Arc<dyn RelationInstanceManager + Send + Sync>,
75 flow_instance_manager: Arc<dyn FlowInstanceManager + Send + Sync>,
76 entity_behaviour_registry: Arc<dyn EntityBehaviourRegistry + Send + Sync>,
77 entity_component_behaviour_registry: Arc<dyn EntityComponentBehaviourRegistry + Send + Sync>,
78 relation_behaviour_registry: Arc<dyn RelationBehaviourRegistry + Send + Sync>,
79 relation_component_behaviour_registry: Arc<dyn RelationComponentBehaviourRegistry + Send + Sync>,
80 config_manager: Arc<dyn ConfigManager + Send + Sync>,
81 graphql_query_service: Arc<dyn GraphQLQueryService + Send + Sync>,
82 web_resource_manager: Arc<dyn WebResourceManager + Send + Sync>,
83 command_manager: Arc<dyn CommandManager + Send + Sync>,
84 ) -> Self {
85 PluginContextImpl {
86 component_manager,
87 component_import_export_manager,
88 component_provider_registry,
89 entity_type_manager,
90 entity_type_import_export_manager,
91 entity_type_provider_registry,
92 relation_type_manager,
93 relation_type_import_export_manager,
94 relation_type_provider_registry,
95 flow_type_manager,
96 flow_type_import_export_manager,
97 flow_type_provider_registry,
98 type_system_event_manager,
99 entity_instance_manager,
100 relation_instance_manager,
101 flow_instance_manager,
102 entity_behaviour_registry,
103 entity_component_behaviour_registry,
104 relation_behaviour_registry,
105 relation_component_behaviour_registry,
106 config_manager,
107 graphql_query_service,
108 web_resource_manager,
109 command_manager,
110 }
111 }
112}
113
114impl PluginContext for PluginContextImpl {
115 fn get_component_manager(&self) -> Arc<dyn ComponentManager + Send + Sync> {
116 self.component_manager.clone()
117 }
118
119 fn get_component_import_export_manager(&self) -> Arc<dyn ComponentImportExportManager + Send + Sync> {
120 self.component_import_export_manager.clone()
121 }
122
123 fn get_component_provider_registry(&self) -> Arc<dyn ComponentProviderRegistry + Send + Sync> {
124 self.component_provider_registry.clone()
125 }
126
127 fn get_entity_type_manager(&self) -> Arc<dyn EntityTypeManager + Send + Sync> {
128 self.entity_type_manager.clone()
129 }
130
131 fn get_entity_type_import_export_manager(&self) -> Arc<dyn EntityTypeImportExportManager + Send + Sync> {
132 self.entity_type_import_export_manager.clone()
133 }
134
135 fn get_entity_type_provider_registry(&self) -> Arc<dyn EntityTypeProviderRegistry + Send + Sync> {
136 self.entity_type_provider_registry.clone()
137 }
138
139 fn get_relation_type_manager(&self) -> Arc<dyn RelationTypeManager + Send + Sync> {
140 self.relation_type_manager.clone()
141 }
142
143 fn get_relation_type_import_export_manager(&self) -> Arc<dyn RelationTypeImportExportManager + Send + Sync> {
144 self.relation_type_import_export_manager.clone()
145 }
146
147 fn get_relation_type_provider_registry(&self) -> Arc<dyn RelationTypeProviderRegistry + Send + Sync> {
148 self.relation_type_provider_registry.clone()
149 }
150
151 fn get_flow_type_manager(&self) -> Arc<dyn FlowTypeManager + Send + Sync> {
152 self.flow_type_manager.clone()
153 }
154
155 fn get_flow_type_import_export_manager(&self) -> Arc<dyn FlowTypeImportExportManager + Send + Sync> {
156 self.flow_type_import_export_manager.clone()
157 }
158
159 fn get_flow_type_provider_registry(&self) -> Arc<dyn FlowTypeProviderRegistry + Send + Sync> {
160 self.flow_type_provider_registry.clone()
161 }
162
163 fn get_type_system_event_manager(&self) -> Arc<dyn TypeSystemEventManager + Send + Sync> {
164 self.type_system_event_manager.clone()
165 }
166
167 fn get_entity_instance_manager(&self) -> Arc<dyn EntityInstanceManager + Send + Sync> {
168 self.entity_instance_manager.clone()
169 }
170
171 fn get_relation_instance_manager(&self) -> Arc<dyn RelationInstanceManager + Send + Sync> {
172 self.relation_instance_manager.clone()
173 }
174
175 fn get_flow_instance_manager(&self) -> Arc<dyn FlowInstanceManager + Send + Sync> {
176 self.flow_instance_manager.clone()
177 }
178
179 fn get_entity_behaviour_registry(&self) -> Arc<dyn EntityBehaviourRegistry + Send + Sync> {
180 self.entity_behaviour_registry.clone()
181 }
182
183 fn get_entity_component_behaviour_registry(&self) -> Arc<dyn EntityComponentBehaviourRegistry + Send + Sync> {
184 self.entity_component_behaviour_registry.clone()
185 }
186
187 fn get_relation_behaviour_registry(&self) -> Arc<dyn RelationBehaviourRegistry + Send + Sync> {
188 self.relation_behaviour_registry.clone()
189 }
190
191 fn get_relation_component_behaviour_registry(&self) -> Arc<dyn RelationComponentBehaviourRegistry + Send + Sync> {
192 self.relation_component_behaviour_registry.clone()
193 }
194
195 fn get_graphql_query_service(&self) -> Arc<dyn GraphQLQueryService + Send + Sync> {
196 self.graphql_query_service.clone()
197 }
198
199 fn get_web_resource_manager(&self) -> Arc<dyn WebResourceManager + Send + Sync> {
200 self.web_resource_manager.clone()
201 }
202
203 fn get_config_manager(&self) -> Arc<dyn ConfigManager + Send + Sync> {
204 self.config_manager.clone()
205 }
206
207 fn get_command_manager(&self) -> Arc<dyn CommandManager + Send + Sync> {
208 self.command_manager.clone()
209 }
210}