refactor method binding base and assign parameter assignments

This commit is contained in:
Michael Becker 2025-10-22 14:35:20 -04:00
parent d15f7066e5
commit 2bd8ad8b0e

View File

@ -37,33 +37,48 @@ public class OmsMethodBuilder
c_ReturnElementMethodBinding = Oms.GetInstance(KnownInstanceGuids.Classes.ReturnElementMethodBinding); c_ReturnElementMethodBinding = Oms.GetInstance(KnownInstanceGuids.Classes.ReturnElementMethodBinding);
} }
public ReturnAttributeMethodBinding CreateReturnAttributeMethodBinding(MethodReturningAttribute method) private InstanceHandle CreateMethodBindingBase(InstanceHandle parentClass, Method method, IEnumerable<KeyValuePair<InstanceHandle, InstanceHandle>>? parameterAssignments)
{ {
InstanceHandle methodBinding = Oms.CreateInstanceOf(c_ReturnAttributeMethodBinding); InstanceHandle methodBinding = Oms.CreateInstanceOf(parentClass);
Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method), method.GetHandle()); Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method), method.GetHandle());
if (parameterAssignments != null)
{
CreateParameterAssignments(methodBinding, parameterAssignments);
}
return methodBinding;
}
private void CreateParameterAssignments(InstanceHandle methodBinding, IEnumerable<KeyValuePair<InstanceHandle, InstanceHandle>> parameterAssignments)
{
List<InstanceHandle> parmAssignments = new List<InstanceHandle>();
foreach (KeyValuePair<InstanceHandle, InstanceHandle> kvp in parameterAssignments)
{
InstanceHandle parmAssignment = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.ParameterAssignment));
Oms.AssignRelationship(parmAssignment, Oms.GetInstance(KnownRelationshipGuids.Parameter_Assignment__assigns_to__Work_Data), kvp.Key);
Oms.AssignRelationship(parmAssignment, Oms.GetInstance(KnownRelationshipGuids.Parameter_Assignment__assigns_from__Executable_returning_Work_Data), kvp.Value);
parmAssignments.Add(parmAssignment);
}
Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__has__Parameter_Assignment), parmAssignments);
}
public ReturnAttributeMethodBinding CreateReturnAttributeMethodBinding(MethodReturningAttribute method, IEnumerable<KeyValuePair<InstanceHandle, InstanceHandle>>? parameterAssignments = null)
{
InstanceHandle methodBinding = CreateMethodBindingBase(c_ReturnAttributeMethodBinding, method, parameterAssignments);
return new ReturnAttributeMethodBinding(methodBinding); return new ReturnAttributeMethodBinding(methodBinding);
} }
public ReturnInstanceSetMethodBinding CreateReturnInstanceSetMethodBinding(MethodReturningInstanceSet method) public ReturnInstanceSetMethodBinding CreateReturnInstanceSetMethodBinding(MethodReturningInstanceSet method, IEnumerable<KeyValuePair<InstanceHandle, InstanceHandle>>? parameterAssignments = null)
{ {
InstanceHandle methodBinding = Oms.CreateInstanceOf(c_ReturnInstanceSetMethodBinding); InstanceHandle methodBinding = CreateMethodBindingBase(c_ReturnInstanceSetMethodBinding, method, parameterAssignments);
Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method), method.GetHandle());
return new ReturnInstanceSetMethodBinding(methodBinding); return new ReturnInstanceSetMethodBinding(methodBinding);
} }
public ReturnElementMethodBinding CreateReturnElementMethodBinding(MethodReturningElement method) public ReturnElementMethodBinding CreateReturnElementMethodBinding(MethodReturningElement method, IEnumerable<KeyValuePair<InstanceHandle, InstanceHandle>>? parameterAssignments = null)
{ {
InstanceHandle methodBinding = Oms.CreateInstanceOf(c_ReturnElementMethodBinding); InstanceHandle methodBinding = CreateMethodBindingBase(c_ReturnElementMethodBinding, method, parameterAssignments);
Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method), method.GetHandle());
return new ReturnElementMethodBinding(methodBinding); return new ReturnElementMethodBinding(methodBinding);
} }
public BuildResponseMethodBinding CreateBuildResponseMethodBinding(MethodBuildingResponse method) public BuildResponseMethodBinding CreateBuildResponseMethodBinding(MethodBuildingResponse method, IEnumerable<KeyValuePair<InstanceHandle, InstanceHandle>>? parameterAssignments = null)
{ {
if (c_BuildResponseMethodBinding == InstanceHandle.Empty) InstanceHandle methodBinding = CreateMethodBindingBase(c_BuildResponseMethodBinding, method, parameterAssignments);
{
c_BuildResponseMethodBinding = Oms.GetInstance(KnownInstanceGuids.Classes.BuildResponseMethodBinding);
}
InstanceHandle methodBinding = Oms.CreateInstanceOf(c_BuildResponseMethodBinding);
Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method), method.GetHandle());
return new BuildResponseMethodBinding(methodBinding); return new BuildResponseMethodBinding(methodBinding);
} }