Beispiel #1
0
        private LockLevel InitializeLockLevel()
        {
            LockLevel result = LockLevel.CheckOut;

            try
            {
                var settingValue = FindBestMatchForProjectSetting(TfsSettings.Default.LockLevels);

                LockLevel parsedLevel;
                if (settingValue != null && Enum.TryParse <LockLevel>(settingValue, true, out parsedLevel))
                {
                    result = parsedLevel;
                }
            }
            catch
            {
            }

            if (Workspace.Location == Microsoft.TeamFoundation.VersionControl.Common.WorkspaceLocation.Local && result == LockLevel.CheckOut)
            {
                result = LockLevel.Checkin;
            }

            return(result);
        }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public override bool Save(XmlWriter writer)
        {
            if (writer == null)
            {
                return(false);
            }


            writer.WriteStartElement(Tag);

            writer.WriteAttributeString("side", Side.ToString());
            writer.WriteAttributeString("reusable", Reusable.ToString());
            writer.WriteAttributeString("activateitem", NeededItem);
            writer.WriteAttributeString("consumeitem", ConsumeItem.ToString());
            writer.WriteAttributeString("picklock", LockLevel.ToString());
            writer.WriteAttributeString("activated", ActivatedDecoration.ToString());
            writer.WriteAttributeString("deactivated", DeactivatedDecoration.ToString());

            if (Scripts.Count > 0)
            {
                writer.WriteStartElement("scripts");
                foreach (WallSwitchScript script in Scripts)
                {
                    script.Save(writer);
                }
                writer.WriteEndElement();
            }


            base.Save(writer);

            writer.WriteEndElement();

            return(true);
        }
Beispiel #3
0
 public LockComponent(LockType type, LockLevel level, string dbname)
     : this()
 {
     this.Type   = type;
     this.Level  = level;
     this.Dbname = dbname;
 }
Beispiel #4
0
        /// <summary>
        /// Locks this item.
        /// </summary>
        /// <param name="level">Whether lock is share or exclusive.</param>
        /// <param name="isDeep">Whether lock is deep.</param>
        /// <param name="requestedTimeOut">Lock timeout which was requested by client.
        /// Server may ignore this parameter and set any timeout.</param>
        /// <param name="owner">Owner of the lock as specified by client.</param>
        /// <returns>
        /// Instance of <see cref="LockResult"/> with information about the lock.
        /// </returns>
        public async Task <LockResult> LockAsync(LockLevel level, bool isDeep, TimeSpan?requestedTimeOut, string owner)
        {
            await RequireUnlockedAsync(level == LockLevel.Shared);

            string token = Guid.NewGuid().ToString();

            // If timeout is absent or infinit timeout requested,
            // grant 5 minute lock.
            TimeSpan timeOut = TimeSpan.FromMinutes(5);

            if (requestedTimeOut.HasValue && requestedTimeOut < TimeSpan.MaxValue)
            {
                timeOut = requestedTimeOut.Value;
            }

            DateLockInfo lockInfo = new DateLockInfo
            {
                Expiration  = DateTime.UtcNow + timeOut,
                IsDeep      = false,
                Level       = level,
                LockRoot    = Path,
                LockToken   = token,
                ClientOwner = owner,
                TimeOut     = timeOut
            };

            await SaveLockAsync(lockInfo);

            await context.socketService.NotifyRefreshAsync(GetParentPath(Path));

            return(new LockResult(lockInfo.LockToken, lockInfo.TimeOut));
        }
Beispiel #5
0
        public ChangeRequest(string path, RequestType requestType, ItemType itemType,
												 RecursionType recursion, LockLevel lockLevel)
        {
            this.item = new ItemSpec(path, recursion);
            this.requestType = requestType;
            this.itemType = itemType;
            this.lockLevel = lockLevel;
        }
Beispiel #6
0
 /// <summary>
 /// Lock configuration for VisualObject.
 /// </summary>
 /// <param name="level">Whether to lock this object for touching or the whole user interface tree.</param>
 /// <param name="personal">If false then lock is common for all players so that player2 won't
 /// be able to touch the object for some time after player1 touched it.</param>
 /// <param name="delay">Lock delay in milliseconds.</param>
 /// <param name="allowThisTouchSession">If not then first touch would lock the object so every next touch during touch session won't pass.</param>
 /// <param name="duringTouchSession">Whether lock has to be active for the whole touch session or not.</param>
 public Lock(LockLevel level = LockLevel.Self, bool personal = true, int delay = -1, bool allowThisTouchSession = true, bool duringTouchSession = false)
 {
     Level    = level;
     Personal = personal;
     Delay    = delay < 0 ? UIDefault.LockDelay : delay;
     AllowThisTouchSession = allowThisTouchSession;
     DuringTouchSession    = duringTouchSession;
 }
Beispiel #7
0
 public ChangeRequest(string path, RequestType requestType, ItemType itemType,
                      RecursionType recursion, LockLevel lockLevel)
 {
     this.item        = new ItemSpec(path, recursion);
     this.requestType = requestType;
     this.itemType    = itemType;
     this.lockLevel   = lockLevel;
 }
 public ChangeRequest(string path, RequestType requestType, ItemType itemType,
                      RecursionType recursion, LockLevel lockLevel, VersionSpec version)
 {
     this.Item = new ItemSpec(path, recursion);
     this.RequestType = requestType;
     this.ItemType = itemType;
     this.LockLevel = lockLevel;
     this.VersionSpec = version;
 }
Beispiel #9
0
 public LockedWay(LockLevel lockLevel, Func <MapLocation, MapLocation?> getNext, Func <Trigger, bool> hasProperFormattedPassage, Func <MapLocation, bool> moveBackCheck, MapLocation fromLocation, IRoom fromRoom)
 {
     LockLevel = lockLevel;
     GetNext   = getNext;
     HasProperFormattedPassage = hasProperFormattedPassage;
     MoveBackCheck             = moveBackCheck;
     FromLocation = fromLocation;
     FromRoom     = fromRoom;
 }
 public ChangeRequest(string path, RequestType requestType, ItemType itemType,
                      RecursionType recursion, LockLevel lockLevel, VersionSpec version)
 {
     this.Item        = new ItemSpec(path, recursion);
     this.RequestType = requestType;
     this.ItemType    = itemType;
     this.LockLevel   = lockLevel;
     this.VersionSpec = version;
 }
        private void AddDoor(int x, int y, bool isEastWest, LockLevel lockLevel = LockLevel.None)
        {
            throw new NotImplementedException("What was going on in these tests?");
            //var location = new MapLocation(_data, x, y);
            //location.Tile = _tileAllWalls;

            //var doorTrigger = location.AddTrigger("Door_Open");
            //doorTrigger.Arg3 = (int)lockLevel;
            //if (!isEastWest)
            //    doorTrigger.Arg4 = 1;
        }
Beispiel #12
0
 public LockEntry(LockEntry cc)
 {
     OT = cc.OT;
     OK = cc.OK;
     NrComposite = cc.NrComposite;
     crea_when = cc.crea_when;
     LastPinged = cc.LastPinged;
     Owner = cc.Owner;
     Level = cc.Level;
     IsSubsidiaryOf = cc.IsSubsidiaryOf;
     HasSubsidiaries = cc.HasSubsidiaries;
 }
        private void SetLock(List <string> paths, ItemType itemType, LockLevel lockLevel, RecursionType recursion)
        {
            if (paths.Count == 0)
            {
                return;
            }

            var            changes = paths.Select(p => new ChangeRequest(p, RequestType.Lock, itemType, recursion, lockLevel, VersionSpec.Latest)).ToList();
            List <Failure> failures;
            var            getOperations = this.VersionControlService.PendChanges(this, changes, out failures);

            ProcessGetOperations(getOperations, ProcessType.Get);
            this.RefreshPendingChanges();
        }
Beispiel #14
0
        /// <summary>
        /// Performs a check-out of the specified item.
        /// </summary>
        /// <param name="item">The path to the file to check out.</param>
        /// <param name="lockLevel">The lock level to apply to each file checked out.</param>
        /// <param name="recursive">Recurse to the last child.</param>
        /// <returns><c>false</c> if file was already checked out.</returns>
        public static bool CheckOut(string item, LockLevel lockLevel = LockLevel.Unchanged, bool recursive = false)
        {
            var checkinChanges = Workspace.GetPendingChangesEnumerable(item, recursive ? RecursionType.Full : RecursionType.None);

            if (!PendingChange.IsIEnumerableEmpty(checkinChanges))
            {
                //File is already checked out.
                return(false);
            }

            Workspace.PendEdit(new string[] { item }, recursive ? RecursionType.Full : RecursionType.None, null, lockLevel, true,
                               Microsoft.TeamFoundation.VersionControl.Common.PendChangesOptions.GetLatestOnCheckout);

            return(true);
        }
        public async Task <LockResult> LockAsync(LockLevel level, bool isDeep, TimeSpan?timeout, string owner)
        {
            if (await ItemHasLockAsync(level == LockLevel.Shared))
            {
                throw new LockedException();
            }

            if (isDeep)
            {
                // check if no items are locked in this subtree
                await FindLocksDownAsync(this, level == LockLevel.Shared);
            }

            if (!timeout.HasValue || timeout == TimeSpan.MaxValue)
            {
                // If timeout is absent or infinity timeout requested,
                // grant 5 minute lock.
                timeout = TimeSpan.FromMinutes(5);
            }

            // We store expiration time in UTC. If server/database is moved
            // to other time zone the locks expiration time is always correct.
            DateTime expires = DateTime.UtcNow + timeout.Value;

            string token             = Guid.NewGuid().ToString();
            string insertLockCommand =
                @"INSERT INTO Lock (ItemID,Token,Shared,Deep,Expires,Owner)
                   VALUES(@ItemID, @Token, @Shared, @Deep, @Expires, @Owner)";

            await Context.ExecuteNonQueryAsync(
                insertLockCommand,
                "@ItemID", ItemId,
                "@Token", token,
                "@Shared", level == LockLevel.Shared,
                "@Deep", isDeep,
                "@Expires", expires,
                "@Owner", owner);

            await Context.socketService.NotifyLockedAsync(Path);

            return(new LockResult(token, timeout.Value));
        }
Beispiel #16
0
    public override void Run()
    {
        Workspace     workspace = GetWorkspaceFromCache();
        List <string> paths;

        ConfirmFilesSpecified();
        paths = VerifiedFullPaths(Arguments);

        LockLevel lockLevel = LockLevelFromString(OptionLock);
        int       rc        = workspace.SetLock(paths.ToArray(), lockLevel, OptionRecursive ? RecursionType.Full : RecursionType.None);

        if (LockLevel.None == lockLevel)
        {
            Console.WriteLine("{0} file(s) unlocked.", rc);
        }
        else
        {
            Console.WriteLine("{0} file(s) locked for {1}.", rc, lockLevel.ToString().ToLower());
        }
    }
Beispiel #17
0
        internal void ToXml(XmlWriter writer, string element)
        {
            writer.WriteStartElement("ChangeRequest");
            writer.WriteAttributeString("req", RequestType.ToString());

            if (RequestType == RequestType.Lock || LockLevel != LockLevel.None)
            {
                writer.WriteAttributeString("lock", LockLevel.ToString());
            }

            if (RequestType == RequestType.Add)
            {
                writer.WriteAttributeString("enc", Encoding.ToString());
            }

            writer.WriteAttributeString("type", ItemType.ToString());
            //writer.WriteAttributeString("did", DeletionId.ToString());
            //writer.WriteAttributeString("targettype", TargetType.ToString());

            if (!String.IsNullOrEmpty(Target))
            {
                // convert local path specs from platform paths to tfs paths as needed
                string fxdTarget;
                if (VersionControlPath.IsServerItem(Target))
                {
                    fxdTarget = Target;
                }
                else
                {
                    fxdTarget = TfsPath.FromPlatformPath(Target);
                }
                writer.WriteAttributeString("target", fxdTarget);
            }

            this.Item.ToXml(writer, "item");
            //this.VersionSpec.ToXml(writer, "vspec");

            writer.WriteEndElement();
        }
Beispiel #18
0
        public int SetLock(string[] paths, LockLevel lockLevel, RecursionType recursion)
        {
            List <ChangeRequest> changes = new List <ChangeRequest>();

            foreach (string path in paths)
            {
                ItemType itemType = ItemType.File;
                if (Directory.Exists(path))
                {
                    itemType = ItemType.Folder;
                }
                changes.Add(new ChangeRequest(path, RequestType.Lock, itemType, recursion, lockLevel));
            }

            if (changes.Count == 0)
            {
                return(0);
            }

            GetOperation[] operations = Repository.PendChanges(this, changes.ToArray());
            return(operations.Length);
        }
        public List <Failure> PendEdit(List <FilePath> paths, RecursionType recursionType, CheckOutLockLevel checkOutlockLevel)
        {
            if (paths.Count == 0)
            {
                return(new List <Failure>());
            }
            LockLevel lockLevel = LockLevel.None;

            if (checkOutlockLevel == CheckOutLockLevel.CheckOut)
            {
                lockLevel = LockLevel.CheckOut;
            }
            else if (checkOutlockLevel == CheckOutLockLevel.CheckIn)
            {
                lockLevel = LockLevel.Checkin;
            }
            var            changes = paths.Select(p => new ChangeRequest(p, RequestType.Edit, ItemType.File, recursionType, lockLevel, VersionSpec.Latest)).ToList();
            List <Failure> failures;
            var            getOperations = this.VersionControlService.PendChanges(this, changes, out failures);

            ProcessGetOperations(getOperations, ProcessType.Edit);
            this.RefreshPendingChanges();
            return(failures);
        }
 public void LockFiles(List <string> paths, LockLevel lockLevel)
 {
     SetLock(paths, ItemType.File, lockLevel, RecursionType.None);
 }
Beispiel #21
0
 /// <summary>
 /// Specifies the lock level.
 /// </summary>
 /// <param name="level">The level of the lock.</param>
 /// <return>The next stage of the definition.</return>
 ManagementLock.Definition.IWithCreate ManagementLock.Definition.IWithLevel.WithLevel(LockLevel level)
 {
     return(this.WithLevel(level));
 }
Beispiel #22
0
        internal static ManagementLockData DeserializeManagementLockData(JsonElement element)
        {
            ResourceIdentifier id         = default;
            string             name       = default;
            ResourceType       type       = default;
            SystemData         systemData = default;
            LockLevel          level      = default;
            Optional <string>  notes      = default;
            Optional <IList <ManagementLockOwner> > owners = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("id"))
                {
                    id = new ResourceIdentifier(property.Value.GetString());
                    continue;
                }
                if (property.NameEquals("name"))
                {
                    name = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("type"))
                {
                    type = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("systemData"))
                {
                    systemData = JsonSerializer.Deserialize <SystemData>(property.Value.ToString());
                    continue;
                }
                if (property.NameEquals("properties"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    foreach (var property0 in property.Value.EnumerateObject())
                    {
                        if (property0.NameEquals("level"))
                        {
                            level = new LockLevel(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("notes"))
                        {
                            notes = property0.Value.GetString();
                            continue;
                        }
                        if (property0.NameEquals("owners"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            List <ManagementLockOwner> array = new List <ManagementLockOwner>();
                            foreach (var item in property0.Value.EnumerateArray())
                            {
                                array.Add(ManagementLockOwner.DeserializeManagementLockOwner(item));
                            }
                            owners = array;
                            continue;
                        }
                    }
                    continue;
                }
            }
            return(new ManagementLockData(id, name, type, systemData, level, notes.Value, Optional.ToList(owners)));
        }
Beispiel #23
0
 internal ManagementLockData(ResourceIdentifier id, string name, ResourceType type, SystemData systemData, LockLevel level, string notes, IList <ManagementLockOwner> owners) : base(id, name, type, systemData)
 {
     Level  = level;
     Notes  = notes;
     Owners = owners;
 }
Beispiel #24
0
 /// <summary>
 /// Specifies the lock level.
 /// </summary>
 /// <param name="level">The level of the lock.</param>
 /// <return>The next stage of the definition.</return>
 ManagementLock.Update.IUpdate ManagementLock.Update.IWithLevel.WithLevel(LockLevel level)
 {
     return(this.WithLevel(level));
 }
Beispiel #25
0
 public int SetLock(string[] paths, LockLevel lockLevel)
 {
     return(SetLock(paths, lockLevel, RecursionType.None));
 }
Beispiel #26
0
 public ManagementLockData(LockLevel level)
 {
     Level  = level;
     Owners = new ChangeTrackingList <ManagementLockOwner>();
 }
Beispiel #27
0
 public int SetLock(string[] paths, LockLevel lockLevel)
 {
     return SetLock(paths, lockLevel, RecursionType.None);
 }
Beispiel #28
0
        public int SetLock(string[] paths, LockLevel lockLevel, RecursionType recursion)
        {
            List<ChangeRequest> changes = new List<ChangeRequest>();

            foreach (string path in paths)
                {
                    ItemType itemType = ItemType.File;
                    if (Directory.Exists(path)) itemType = ItemType.Folder;
                    changes.Add(new ChangeRequest(path, RequestType.Lock, itemType, recursion, lockLevel));
                }

            if (changes.Count == 0) return 0;

            GetOperation[] operations = Repository.PendChanges(this, changes.ToArray());
            return operations.Length;
        }
Beispiel #29
0
 public int SetLock(string path, LockLevel lockLevel, RecursionType recursion)
 {
     string[] paths = new string[1];
     paths[0] = path;
     return SetLock(paths, lockLevel, recursion);
 }
Beispiel #30
0
 public GetStatus Merge(string sourcePath, string targetPath, VersionSpec versionFrom, VersionSpec versionTo, LockLevel lockLevel, RecursionType recursion, MergeOptionsEx mergeOptions)
 {
     return(Workspace.Merge(sourcePath, targetPath, versionFrom, versionTo, lockLevel, recursion, mergeOptions));
 }
Beispiel #31
0
 public int SetLock(string path, LockLevel lockLevel, RecursionType recursion)
 {
     string[] paths = new string[1];
     paths[0] = path;
     return(SetLock(paths, lockLevel, recursion));
 }
Beispiel #32
0
        void IUtf8JsonSerializable.Write(Utf8JsonWriter writer)
        {
            writer.WriteStartObject();
            if (Optional.IsDefined(ManagedBy))
            {
                writer.WritePropertyName("managedBy");
                writer.WriteStringValue(ManagedBy);
            }
            if (Optional.IsDefined(Sku))
            {
                writer.WritePropertyName("sku");
                writer.WriteObjectValue(Sku);
            }
            writer.WritePropertyName("tags");
            writer.WriteStartObject();
            foreach (var item in Tags)
            {
                writer.WritePropertyName(item.Key);
                writer.WriteStringValue(item.Value);
            }
            writer.WriteEndObject();
            writer.WritePropertyName("location");
            writer.WriteStringValue(Location);
            writer.WritePropertyName("properties");
            writer.WriteStartObject();
            writer.WritePropertyName("lockLevel");
            writer.WriteStringValue(LockLevel.ToSerialString());
            if (Optional.IsDefined(DisplayName))
            {
                writer.WritePropertyName("displayName");
                writer.WriteStringValue(DisplayName);
            }
            if (Optional.IsDefined(IsEnabled))
            {
                writer.WritePropertyName("isEnabled");
                writer.WriteBooleanValue(IsEnabled.Value);
            }
            if (Optional.IsCollectionDefined(Authorizations))
            {
                writer.WritePropertyName("authorizations");
                writer.WriteStartArray();
                foreach (var item in Authorizations)
                {
                    writer.WriteObjectValue(item);
                }
                writer.WriteEndArray();
            }
            if (Optional.IsCollectionDefined(Artifacts))
            {
                writer.WritePropertyName("artifacts");
                writer.WriteStartArray();
                foreach (var item in Artifacts)
                {
                    writer.WriteObjectValue(item);
                }
                writer.WriteEndArray();
            }
            if (Optional.IsDefined(Description))
            {
                writer.WritePropertyName("description");
                writer.WriteStringValue(Description);
            }
            if (Optional.IsDefined(PackageFileUri))
            {
                writer.WritePropertyName("packageFileUri");
                writer.WriteStringValue(PackageFileUri.AbsoluteUri);
            }
            if (Optional.IsDefined(MainTemplate))
            {
                writer.WritePropertyName("mainTemplate");
#if NET6_0_OR_GREATER
                writer.WriteRawValue(MainTemplate);
#else
                JsonSerializer.Serialize(writer, JsonDocument.Parse(MainTemplate.ToString()).RootElement);
#endif
            }
            if (Optional.IsDefined(CreateUiDefinition))
            {
                writer.WritePropertyName("createUiDefinition");
#if NET6_0_OR_GREATER
                writer.WriteRawValue(CreateUiDefinition);
#else
                JsonSerializer.Serialize(writer, JsonDocument.Parse(CreateUiDefinition.ToString()).RootElement);
#endif
            }
            if (Optional.IsDefined(NotificationPolicy))
            {
                writer.WritePropertyName("notificationPolicy");
                writer.WriteObjectValue(NotificationPolicy);
            }
            if (Optional.IsDefined(LockingPolicy))
            {
                writer.WritePropertyName("lockingPolicy");
                writer.WriteObjectValue(LockingPolicy);
            }
            if (Optional.IsDefined(DeploymentPolicy))
            {
                writer.WritePropertyName("deploymentPolicy");
                writer.WriteObjectValue(DeploymentPolicy);
            }
            if (Optional.IsDefined(ManagementPolicy))
            {
                writer.WritePropertyName("managementPolicy");
                writer.WriteObjectValue(ManagementPolicy);
            }
            if (Optional.IsCollectionDefined(Policies))
            {
                writer.WritePropertyName("policies");
                writer.WriteStartArray();
                foreach (var item in Policies)
                {
                    writer.WriteObjectValue(item);
                }
                writer.WriteEndArray();
            }
            writer.WriteEndObject();
            writer.WriteEndObject();
        }
 ///GENMHASH:27F1B3D7EB2E0F91AF83173279E7FA96:9C9831FCEC83B409757383F3CDF99744
 public ManagementLockImpl WithLevel(LockLevel level)
 {
     Inner.Level = level.Value;
     return(this);
 }
 ///GENMHASH:CDB75282F99C92A566E39254F670EF12:9FAE75E920E3F72AB54825C7B6562D8A
 public LockLevel Level()
 {
     return(LockLevel.Parse(Inner.Level));
 }
 public void LockFolders(List <string> paths, LockLevel lockLevel)
 {
     SetLock(paths, ItemType.File, lockLevel, RecursionType.Full);
 }