Example #1
0
        /// <summary>
        /// Determine the project ids of the given project codes by contacting the JIRA soap service.
        /// Then do an initial query for issues with these given ids
        /// </summary>
        private void DoInit()
        {
            try
            {
                Monitor.Enter(_lock);

                // Pre cleaning...
                _hasInit = true;                // by the time this is done, we will have init...
                _projectStatuses.Clear();
                _projectIds.Clear();

                lock ( _items )
                {
                    _items.Clear();
                }

                // Check to make sure the config is valid...
                _config.Load();

                if (!_config.IsValid())
                {
                    Log("Configuration for JIRA is not valid, see the plugin settings page");

                    // we failed to init
                    _hasInit = false;
                    return;
                }

                Log("Initializing repository: " + _config.BaseUrl);

                // init the service connection
                _service = new JIRAServerFacade(_config.BaseUrl, _config.Username, _config.Password);

                // Identify the available resolutions for an issue
                foreach (RemoteStatus status in _service.getStatuses())
                {
                    _projectStatuses.Add(int.Parse(status.id));

                    Log("Init Status: {0} => {1}", status.name, status.id);
                }

                // We want all issues that have a status that isn't 5 or 6 (resolved/closed)
                // we need to do it this way because JIRA doesn't support logical operators
                // for exclusion: see JRA-1560
                List <int> reqStatuses = new List <int>(_projectStatuses);
                reqStatuses.Remove(JIRAIssueItem.STATUS_RESOLVED);
                reqStatuses.Remove(JIRAIssueItem.STATUS_CLOSED);

                // Identify the project id's that we're interested in
                foreach (string projectKey in _config.Projects)
                {
                    RemoteProject project   = _service.getProjectByKey(projectKey);
                    long          projectId = long.Parse(project.id);

                    // Use the rss client to discover the issues for this project that are open
                    List <JIRAIssueItem> issues = ConvertFromRemoteIssues(
                        _service.GetAllIssuesWithStatus(
                            new List <long>(new long[] { projectId }),
                            reqStatuses));

                    // Store this project and it's issues
                    _projectIds.Add(projectId);

                    lock ( _items )
                    {
                        _items.AddRange(issues.ToArray());
                    }

                    Log("Init Project: {0} [{1}=>{2}] with: {3} issues.",
                        project.name, project.key, project.id, issues.Count);
                }
            }
            catch (System.Web.Services.Protocols.SoapException e)
            {
                Log("Failure (re-)initializating JIRA plugin...\n{0}", e);
            }
            finally
            {
                Monitor.Exit(_lock);
            }
        }
Example #2
0
        /// <summary>
        /// Determine the project ids of the given project codes by contacting the JIRA soap service.
        /// Then do an initial query for issues with these given ids
        /// </summary>
        private void DoInit()
        {
            try
            {
                Monitor.Enter( _lock );

                // Pre cleaning...
                _hasInit= true; // by the time this is done, we will have init...
                _projectStatuses.Clear();
                _projectIds.Clear();

                lock( _items )
                {
                    _items.Clear();
                }

                // Check to make sure the config is valid...
                _config.Load();

                if( !_config.IsValid() )
                {
                    Log( "Configuration for JIRA is not valid, see the plugin settings page" );

                    // we failed to init
                    _hasInit= false;
                    return;
                }

                Log( "Initializing repository: "+_config.BaseUrl );

                // init the service connection
                _service= new JIRAServerFacade( _config.BaseUrl, _config.Username, _config.Password );

                // Identify the available resolutions for an issue
                foreach( RemoteStatus status in _service.getStatuses() )
                {
                    _projectStatuses.Add( int.Parse( status.id ) );

                    Log( "Init Status: {0} => {1}", status.name, status.id );
                }

                // We want all issues that have a status that isn't 5 or 6 (resolved/closed)
                // we need to do it this way because JIRA doesn't support logical operators
                // for exclusion: see JRA-1560
                List<int> reqStatuses= new List<int>( _projectStatuses );
                reqStatuses.Remove( JIRAIssueItem.STATUS_RESOLVED );
                reqStatuses.Remove( JIRAIssueItem.STATUS_CLOSED );

                // Identify the project id's that we're interested in
                foreach( string projectKey in _config.Projects )
                {
                    RemoteProject project= _service.getProjectByKey( projectKey );
                    long projectId= long.Parse( project.id );

                    // Use the rss client to discover the issues for this project that are open
                    List<JIRAIssueItem> issues= ConvertFromRemoteIssues(
                                        _service.GetAllIssuesWithStatus(
                                                            new List<long>( new long[]{ projectId } ),
                                                            reqStatuses ) );

                    // Store this project and it's issues
                    _projectIds.Add( projectId );

                    lock( _items )
                    {
                        _items.AddRange( issues.ToArray() );
                    }

                    Log( "Init Project: {0} [{1}=>{2}] with: {3} issues.",
                        project.name, project.key, project.id, issues.Count );
                }

            }
            catch( System.Web.Services.Protocols.SoapException e )
            {
                Log( "Failure (re-)initializating JIRA plugin...\n{0}", e );
            }
            finally
            {
                Monitor.Exit( _lock );
            }
        }