public Proxy.IRelationship CreateRelationship(TransactionFramework.ISoapTransactionLink transactionLink, Guid domainId, Guid rootMapId, Dictionary <Proxy.ConnectionType, Proxy.INode> nodes, Proxy.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 = Proxy.LoadState.Full; facadeRelationship.BaseRelationship = relationship; foreach (KeyValuePair <Proxy.ConnectionType, Proxy.INode> relationshipContext in nodes) { Proxy.ConnectionSet connection = Proxy.ConnectionSetFactory.Instance.GetConnection(relationshipContext.Value, facadeRelationship, relationshipContext.Key); Proxy.INodeManager newRelationshipNodes = relationship.Nodes; newRelationshipNodes.Load(connection); Proxy.IRelationshipManager nodeRelationships = relationshipContext.Value.Relationships; nodeRelationships.Load(connection); } InProcessRelationships.Add(transactionLink, facadeRelationship); return(facadeRelationship); }
public Proxy.IRelationship CreateRelationship(TransactionFramework.ISoapTransactionLink transactionLink, Guid domainId, Guid rootMapId, Dictionary<Proxy.ConnectionType, Proxy.INode> nodes, Proxy.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 = Proxy.LoadState.Full; facadeRelationship.BaseRelationship = relationship; foreach (KeyValuePair<Proxy.ConnectionType, Proxy.INode> relationshipContext in nodes) { Proxy.ConnectionSet connection = Proxy.ConnectionSetFactory.Instance.GetConnection(relationshipContext.Value, facadeRelationship, relationshipContext.Key); Proxy.INodeManager newRelationshipNodes = relationship.Nodes; newRelationshipNodes.Load(connection); Proxy.IRelationshipManager nodeRelationships = relationshipContext.Value.Relationships; nodeRelationships.Load(connection); } InProcessRelationships.Add(transactionLink, facadeRelationship); return facadeRelationship; }
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(); } } }