-
Notifications
You must be signed in to change notification settings - Fork 39
Expand file tree
/
Copy pathResourceActivityBindingResolverFactory.cs
More file actions
56 lines (45 loc) · 1.62 KB
/
Copy pathResourceActivityBindingResolverFactory.cs
File metadata and controls
56 lines (45 loc) · 1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// Copyright (c) 2026 Phoenix Contact GmbH & Co. KG
// Licensed under the Apache License, Version 2.0
using System.Reflection;
using Moryx.AbstractionLayer.Activities;
using Moryx.AbstractionLayer.Resources;
using Moryx.Bindings;
namespace Moryx.ProcessData.Adapter.ProcessEngine;
internal class ResourceActivityBindingResolverFactory : ActivityBindingResolverFactory
{
private readonly IResourceManagement _resourceManagement;
public ResourceActivityBindingResolverFactory(IResourceManagement resourceManagement)
{
_resourceManagement = resourceManagement;
}
protected override IBindingResolverChain CreateBaseResolver(string baseKey)
{
return baseKey switch
{
"Resource" => new TracingResourceResolver(_resourceManagement),
_ => base.CreateBaseResolver(baseKey)
};
}
}
internal class TracingResourceResolver : BindingResolverBase
{
private readonly IResourceManagement _resourceManagement;
public TracingResourceResolver(IResourceManagement resourceManagement)
{
_resourceManagement = resourceManagement;
}
protected override object Resolve(object source)
{
var tracing = ((Activity)source).Tracing.Transform<Tracing>();
if (tracing == null)
return null;
// Usage of original resource instead of proxy
var resource = _resourceManagement.GetResourcesUnsafe<IResource>(r => r.Id == tracing.ResourceId)
.FirstOrDefault();
return resource;
}
protected override bool Update(object source, object value)
{
throw new NotImplementedException();
}
}