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);
}
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());
return new ReturnAttributeMethodBinding(methodBinding);
if (parameterAssignments != null)
{
CreateParameterAssignments(methodBinding, parameterAssignments);
}
public ReturnInstanceSetMethodBinding CreateReturnInstanceSetMethodBinding(MethodReturningInstanceSet method)
{
InstanceHandle methodBinding = Oms.CreateInstanceOf(c_ReturnInstanceSetMethodBinding);
Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method), method.GetHandle());
return new ReturnInstanceSetMethodBinding(methodBinding);
}
public ReturnElementMethodBinding CreateReturnElementMethodBinding(MethodReturningElement method)
{
InstanceHandle methodBinding = Oms.CreateInstanceOf(c_ReturnElementMethodBinding);
Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method), method.GetHandle());
return new ReturnElementMethodBinding(methodBinding);
}
public BuildResponseMethodBinding CreateBuildResponseMethodBinding(MethodBuildingResponse method)
{
if (c_BuildResponseMethodBinding == InstanceHandle.Empty)
{
c_BuildResponseMethodBinding = Oms.GetInstance(KnownInstanceGuids.Classes.BuildResponseMethodBinding);
return methodBinding;
}
InstanceHandle methodBinding = Oms.CreateInstanceOf(c_BuildResponseMethodBinding);
Oms.AssignRelationship(methodBinding, Oms.GetInstance(KnownRelationshipGuids.Method_Binding__executes__Method), method.GetHandle());
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);
}
public ReturnInstanceSetMethodBinding CreateReturnInstanceSetMethodBinding(MethodReturningInstanceSet method, IEnumerable<KeyValuePair<InstanceHandle, InstanceHandle>>? parameterAssignments = null)
{
InstanceHandle methodBinding = CreateMethodBindingBase(c_ReturnInstanceSetMethodBinding, method, parameterAssignments);
return new ReturnInstanceSetMethodBinding(methodBinding);
}
public ReturnElementMethodBinding CreateReturnElementMethodBinding(MethodReturningElement method, IEnumerable<KeyValuePair<InstanceHandle, InstanceHandle>>? parameterAssignments = null)
{
InstanceHandle methodBinding = CreateMethodBindingBase(c_ReturnElementMethodBinding, method, parameterAssignments);
return new ReturnElementMethodBinding(methodBinding);
}
public BuildResponseMethodBinding CreateBuildResponseMethodBinding(MethodBuildingResponse method, IEnumerable<KeyValuePair<InstanceHandle, InstanceHandle>>? parameterAssignments = null)
{
InstanceHandle methodBinding = CreateMethodBindingBase(c_BuildResponseMethodBinding, method, parameterAssignments);
return new BuildResponseMethodBinding(methodBinding);
}