public IRelationship CreateRelationship(TransactionFramework.ISoapTransactionLink transactionLink, Guid domainId, Guid rootMapId, Dictionary<ConnectionType, INode> nodes, RelationshipType relationshipType, string originalId) { FacadeRelationship facadeRelationship = new FacadeRelationship(); InProcess.InProcessRelationship relationship = new InProcess.InProcessRelationship(MapManager); relationship.OriginLink = transactionLink; relationship.Facade = facadeRelationship; relationship.Id = Guid.NewGuid(); relationship.DomainId = domainId; relationship.RootMapId = rootMapId; relationship.RelationshipType = relationshipType; relationship.OriginalId = originalId; relationship.Status = LoadState.Full; facadeRelationship.BaseRelationship = relationship; foreach (KeyValuePair<ConnectionType, INode> relationshipContext in nodes) { ConnectionSet connection = ConnectionSetFactory.Instance.GetConnection(relationshipContext.Value, facadeRelationship, relationshipContext.Key); INodeManager newRelationshipNodes = relationship.Nodes; newRelationshipNodes.Load(connection); IRelationshipManager nodeRelationships = relationshipContext.Value.Relationships; nodeRelationships.Load(connection); } InProcessRelationships.Add(transactionLink, facadeRelationship); return facadeRelationship; }
public IRelationship CreateRelationship(TransactionFramework.ISoapTransactionLink transactionLink, Guid domainId, Guid rootMapId, Dictionary <ConnectionType, INode> nodes, RelationshipType relationshipType, string originalId) { FacadeRelationship facadeRelationship = new FacadeRelationship(); InProcess.InProcessRelationship relationship = new InProcess.InProcessRelationship(MapManager); relationship.OriginLink = transactionLink; relationship.Facade = facadeRelationship; relationship.Id = Guid.NewGuid(); relationship.DomainId = domainId; relationship.RootMapId = rootMapId; relationship.RelationshipType = relationshipType; relationship.OriginalId = originalId; relationship.Status = LoadState.Full; facadeRelationship.BaseRelationship = relationship; foreach (KeyValuePair <ConnectionType, INode> relationshipContext in nodes) { ConnectionSet connection = ConnectionSetFactory.Instance.GetConnection(relationshipContext.Value, facadeRelationship, relationshipContext.Key); INodeManager newRelationshipNodes = relationship.Nodes; newRelationshipNodes.Load(connection); IRelationshipManager nodeRelationships = relationshipContext.Value.Relationships; nodeRelationships.Load(connection); } InProcessRelationships.Add(transactionLink, facadeRelationship); return(facadeRelationship); }
public SoapRelationship(InProcess.InProcessRelationship inProcessRelationship, ServerObjects.Relationship serviceRelationship) { ServiceRelationship = serviceRelationship; InProcessRelationship = inProcessRelationship; Id = serviceRelationship.RelationshipUid; DomainId = inProcessRelationship.DomainId; RootMapId = inProcessRelationship.RootMapId; OriginalId = inProcessRelationship.OriginalId; RelationshipType = inProcessRelationship.RelationshipType; Status = Proxy.LoadState.Full; MapManager = inProcessRelationship.MapManager; Nodes = inProcessRelationship.Nodes; Metadata = inProcessRelationship.Metadata; }
public virtual void ConnectNode(ConnectionType connectionType, INode node, ref Soap.TransactionFramework.TransactionChain chain) { InProcess.InProcessRelationship inProcessRelationship = this as InProcess.InProcessRelationship; Proxy.ConnectionSet connectionSet; if (inProcessRelationship != null) { connectionSet = Proxy.ConnectionSetFactory.Instance.GetConnection(node, inProcessRelationship.Facade, connectionType); } else { connectionSet = Proxy.ConnectionSetFactory.Instance.GetConnection(node, this, connectionType); } Proxy.INodeManager nodes = Nodes; nodes.Load(connectionSet); Proxy.IRelationshipManager relationships = node.Relationships; relationships.Load(connectionSet); }
DependencyCollection ISoapTransactionLinkExecutor.UpdateDependencies() { ISoapTransactionLinkExecutor executor = (ISoapTransactionLinkExecutor)this; IFacade iFacadeRelationship = Relationship as IFacade; if (iFacadeRelationship != null) { if (!iFacadeRelationship.IsConcrete) { FacadeRelationship facadeRelationship = iFacadeRelationship as FacadeRelationship; InProcess.InProcessRelationship inProcessRelationship = facadeRelationship.BaseRelationship as InProcess.InProcessRelationship; if (inProcessRelationship != null && inProcessRelationship.OriginLink != null && inProcessRelationship.OriginLink.OriginChain != OriginChain) { executor.Dependencies.AddFacade(iFacadeRelationship); } } } foreach (KeyValuePair <ConnectionType, INode> nodePairs in ProxyNodeConnections) { IFacade iFacadeNode = nodePairs.Value as IFacade; if (iFacadeNode != null) { if (!iFacadeNode.IsConcrete) { FacadeNode facadeNode = iFacadeNode as FacadeNode; InProcess.InProcessNode inProcessNode = facadeNode.BaseNode as InProcess.InProcessNode; if (inProcessNode != null && inProcessNode.OriginLink != null && inProcessNode.OriginLink.OriginChain != OriginChain) { executor.Dependencies.AddFacade(iFacadeNode); } } } } return(executor.Dependencies); }
public void UpgradeFacade(TransactionFramework.ISoapTransactionLink transactionLink, ServerObjects.Relationship serviceRelationship) { if (InProcessRelationships.ContainsKey(transactionLink)) { FacadeRelationship facadeRelationship = InProcessRelationships[transactionLink]; InProcess.InProcessRelationship inProcessRelationship = facadeRelationship.BaseRelationship as InProcess.InProcessRelationship; if (inProcessRelationship != null) { SoapRelationship soapRelationship = new SoapRelationship(inProcessRelationship, serviceRelationship); facadeRelationship.BaseRelationship = soapRelationship; InProcessRelationships.Remove(transactionLink); ProxyRelationships[facadeRelationship.Id] = facadeRelationship; /// TODO: Need to consider a better way to do this. I don't like that there is a need to call this afterwards and maybe it should be done when creating the SoapRelationship. I don't like it because it doesn't have to be done everytime a new SoapRelationship is created e.g. if the SoapNode is created from a Service.RE as opposed to a returned call like here. soapRelationship.ProcessDelayedActions(); } } }
DependencyCollection ISoapTransactionLinkExecutor.UpdateDependencies() { ISoapTransactionLinkExecutor executor = (ISoapTransactionLinkExecutor)this; IFacade iFacadeRelationship = Relationship as IFacade; if (iFacadeRelationship != null) { if (!iFacadeRelationship.IsConcrete) { FacadeRelationship facadeRelationship = iFacadeRelationship as FacadeRelationship; InProcess.InProcessRelationship inProcessRelationship = facadeRelationship.BaseRelationship as InProcess.InProcessRelationship; if (inProcessRelationship != null && inProcessRelationship.OriginLink != null && inProcessRelationship.OriginLink.OriginChain != OriginChain) { executor.Dependencies.AddFacade(iFacadeRelationship); } } } return(executor.Dependencies); }
public DelayedRelationshipActions(InProcess.InProcessRelationship relationshipContext) { RelationshipContext = relationshipContext; }