public ITaskBranch GetBranchForRole(BranchRoles role, EngineModes mode, bool fallbackToAll) { var roleBranches = _branches.Values.Where(e => e as RoleBranch != null).Select(e => e as RoleBranch); var result = roleBranches.LastOrDefault(instance => instance.BranchRole == role && instance.RoleMode== mode) as ITaskBranch; if (result == null && fallbackToAll) result = GetBranchForRole(role, EngineModes.All, false) ; if (result == null) Log.DebugFormat("Cannot find branch for role {0} and mode {1}", role, mode); return result; }
public BranchNotFound(BranchRoles role, EngineModes mode) { Issue = string.Format("No branch defined for role {0} and mode {1}", role, mode); }
private IResult ExecuteBranch(BranchRoles role, IResult result) { var manager = Application.Current.CurrentKernel().Get<IBranchManager>(); var branch = manager.GetBranchForRole(role, Mode, true); return branch == null ? new BranchNotFound(role, Mode) : branch.Execute(result); }