protected override void Dispose(bool disposing)
        {
            try
            {
                if (!disposing)
                {
                    return;
                }

                if (RegisteredInstances == null)
                {
                    return;
                }

                lock (RegisteredInstances)
                {
                    var refs = RegisteredInstances.Values
                               .SelectMany(e => e)
                               .ToList();
                    foreach (var r in refs)
                    {
                        if (r.TryGetTarget(out var t))
                        {
                            t.Dispose();
                        }
                    }
                    RegisteredInstances.Clear();
                    RegisteredInstances = null;
                }
            }
            finally
            {
                base.Dispose(disposing);
            }
        }
        protected override void Dispose(bool disposing)
        {
            if (!disposing)
            {
                return;
            }

            if (RegisteredInstances == null)
            {
                return;
            }

            lock (RegisteredInstances) {
                foreach (var o in RegisteredInstances.Values)
                {
                    foreach (var r in o)
                    {
                        IJavaPeerable t;
                        if (!r.TryGetTarget(out t))
                        {
                            continue;
                        }
                        t.Dispose();
                    }
                }
                RegisteredInstances.Clear();
            }
        }
Esempio n. 3
0
        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);

            if (!disposing)
            {
                return;
            }

            if (RegisteredInstances == null)
            {
                return;
            }

            lock (RegisteredInstances) {
                foreach (var o in RegisteredInstances.Values)
                {
                    foreach (var r in o)
                    {
                        IJavaPeerable t;
                        if (!r.TryGetTarget(out t))
                        {
                            continue;
                        }
                        t.Dispose();
                    }
                }
                RegisteredInstances.Clear();
                RegisteredInstances = null;
            }

            if (bridge != IntPtr.Zero)
            {
                NativeMethods.java_interop_gc_bridge_remove_current_app_domain(bridge);
                bridge = IntPtr.Zero;
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Entry point for the console application.
        /// </summary>
        /// <param name="args">Optional parameter is the Name or Uri of a
        /// registered project collection to connect to.</param>
        static void Main(string[] args)
        {
            List <RegisteredProjectCollection> projectCollections = null;

            if (args.Count() > 0)
            {
                // try the specified argument as the name or Uri of a registered project collection
                projectCollections = new List <RegisteredProjectCollection>();
                projectCollections.Add(RegisteredInstances.GetProjectCollection(args[1]));
            }
            else
            {
                // get all registered project collections (previously connected to from Team Explorer)
                projectCollections = new List <RegisteredProjectCollection>(
                    (IEnumerable <RegisteredProjectCollection>)(RegisteredInstances.GetProjectCollections()));
            }

            // filter down to only those collections that are currently on-line
            var onlineCollections =
                from collection in projectCollections
                where collection.Offline == false
                select collection;

            // fail if there are no registered collections that are currently on-line
            if (onlineCollections.Count() < 1)
            {
                Console.Error.WriteLine("Error: There are no on-line registered project collections");
                Environment.Exit(1);
            }

            // find a project collection with at least one team project
            foreach (var projectCollection in onlineCollections)
            {
                using (TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer(projectCollection))
                {
                    Workspace workspace        = null;
                    Boolean   createdWorkspace = false;
                    String    newFolder        = String.Empty;

                    try
                    {
                        var versionControl = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));

                        var teamProjects = new List <TeamProject>(
                            (IEnumerable <TeamProject>)(versionControl.GetAllTeamProjects(false)));

                        // if there are no team projects in this collection, skip it
                        if (teamProjects.Count < 1)
                        {
                            continue;
                        }

                        RegisterEventHandlers(versionControl);

                        // Create a workspace
                        String assemblyName  = GetAssemblyName();
                        String workspaceName = String.Format("{0}-{1}", Environment.MachineName, assemblyName);

                        try
                        {
                            workspace = versionControl.GetWorkspace(workspaceName,
                                                                    versionControl.AuthenticatedUser);
                        }
                        catch (WorkspaceNotFoundException)
                        {
                            workspace = versionControl.CreateWorkspace(workspaceName,
                                                                       versionControl.AuthenticatedUser);

                            createdWorkspace = true;
                        }

                        var serverFolder  = String.Format("$/{0}", teamProjects[0].Name);
                        var localFolder   = Path.Combine(Path.GetTempPath(), assemblyName);
                        var workingFolder = new WorkingFolder(serverFolder, localFolder);

                        // Create a workspace mapping
                        workspace.CreateMapping(workingFolder);

                        if (!workspace.HasReadPermission)
                        {
                            throw new SecurityException(
                                      String.Format("{0} does not have read permission for {1}",
                                                    versionControl.AuthenticatedUser, serverFolder));
                        }

                        // Get the files from the repository
                        workspace.Get();

                        // Create a file
                        newFolder = Path.Combine(workspace.Folders[0].LocalItem, "For Test Purposes");
                        Directory.CreateDirectory(newFolder);
                        String newFilename = Path.Combine(newFolder, "Safe to Delete.txt");

                        AddNewFile(workspace, newFilename);
                        ModifyFile(workspace, newFilename);
                        BranchFile(workspace, newFilename);
                        DeleteFolder(workspace, newFolder);
                    }
                    finally
                    {
                        if ((workspace != null) && createdWorkspace)
                        {
                            workspace.Delete();
                        }

                        if (!String.IsNullOrEmpty(newFolder) && Directory.Exists(newFolder))
                        {
                            Directory.Delete(newFolder, true);
                        }
                    }

                    break;
                }
            }
        }