Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 148231 Details for
Bug 290490
[editor] refresh attributes in Task Editor should only update the configuration for the selected task
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Patch with the new API and SubMonitor
improved.txt (text/plain), 14.45 KB, created by
Pawel Niewiadomski
on 2009-09-28 09:19:40 EDT
(
hide
)
Description:
Patch with the new API and SubMonitor
Filename:
MIME Type:
Creator:
Pawel Niewiadomski
Created:
2009-09-28 09:19:40 EDT
Size:
14.45 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.mylyn.jira.core >Index: src/org/eclipse/mylyn/internal/jira/core/service/JiraClientCache.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.jira.core/src/org/eclipse/mylyn/internal/jira/core/service/JiraClientCache.java,v >retrieving revision 1.14 >diff -u -r1.14 JiraClientCache.java >--- src/org/eclipse/mylyn/internal/jira/core/service/JiraClientCache.java 24 Jul 2009 12:04:22 -0000 1.14 >+++ src/org/eclipse/mylyn/internal/jira/core/service/JiraClientCache.java 28 Sep 2009 13:18:42 -0000 >@@ -17,7 +17,7 @@ > import java.util.Set; > > import org.eclipse.core.runtime.IProgressMonitor; >-import org.eclipse.mylyn.commons.net.Policy; >+import org.eclipse.core.runtime.SubMonitor; > import org.eclipse.mylyn.internal.jira.core.model.IssueType; > import org.eclipse.mylyn.internal.jira.core.model.JiraStatus; > import org.eclipse.mylyn.internal.jira.core.model.JiraVersion; >@@ -27,6 +27,7 @@ > import org.eclipse.mylyn.internal.jira.core.model.SecurityLevel; > import org.eclipse.mylyn.internal.jira.core.model.ServerInfo; > import org.eclipse.mylyn.internal.jira.core.model.User; >+import org.eclipse.osgi.util.NLS; > > /** > * @author Steffen Pingel >@@ -64,20 +65,35 @@ > } > > private void initializeProjects(JiraClientData data, IProgressMonitor monitor) throws JiraException { >- String version = data.serverInfo.getVersion(); >- > data.projects = jiraClient.getProjects(monitor); > >+ SubMonitor submonitor = SubMonitor.convert(monitor, Messages.JiraClientCache_getting_project_details, >+ data.projects.length); >+ > data.projectsById = new HashMap<String, Project>(data.projects.length); > data.projectsByKey = new HashMap<String, Project>(data.projects.length); > > for (Project project : data.projects) { >- project.setComponents(jiraClient.getComponents(project.getKey(), monitor)); >- project.setVersions(jiraClient.getVersions(project.getKey(), monitor)); >+ initializeProject(project, submonitor.newChild(1, SubMonitor.SUPPRESS_NONE)); >+ >+ data.projectsById.put(project.getId(), project); >+ data.projectsByKey.put(project.getKey(), project); >+ } >+ } >+ >+ private void initializeProject(Project project, IProgressMonitor monitor) throws JiraException { >+ SubMonitor submonitor = SubMonitor.convert(monitor, NLS.bind(Messages.JiraClientCache_project_details_for, >+ project.getKey()), 1); >+ >+ synchronized (project) { >+ final String version = data.serverInfo.getVersion(); >+ >+ project.setComponents(jiraClient.getComponents(project.getKey(), submonitor.newChild(0))); >+ project.setVersions(jiraClient.getVersions(project.getKey(), submonitor.newChild(0))); > > if (supportsPerProjectIssueTypes(version) >= 0) { >- IssueType[] issueTypes = jiraClient.getIssueTypes(project.getId(), monitor); >- IssueType[] subTaskIssueTypes = jiraClient.getSubTaskIssueTypes(project.getId(), monitor); >+ IssueType[] issueTypes = jiraClient.getIssueTypes(project.getId(), submonitor.newChild(0)); >+ IssueType[] subTaskIssueTypes = jiraClient.getSubTaskIssueTypes(project.getId(), submonitor.newChild(0)); > for (IssueType issueType : subTaskIssueTypes) { > issueType.setSubTaskType(true); > } >@@ -90,7 +106,8 @@ > } > if (new JiraVersion(version).compareTo(JiraVersion.JIRA_3_13) >= 0) { > try { >- SecurityLevel[] securityLevels = jiraClient.getAvailableSecurityLevels(project.getKey(), monitor); >+ SecurityLevel[] securityLevels = jiraClient.getAvailableSecurityLevels(project.getKey(), >+ submonitor.newChild(0)); > if (securityLevels.length > 0) { > SecurityLevel[] projectSecurityLevels = new SecurityLevel[securityLevels.length + 1]; > projectSecurityLevels[0] = SecurityLevel.NONE; >@@ -102,9 +119,6 @@ > project.setSecurityLevels(null); > } > } >- >- data.projectsById.put(project.getId(), project); >- data.projectsByKey.put(project.getKey(), project); > } > } > >@@ -121,6 +135,8 @@ > } > > private void initializePriorities(JiraClientData data, IProgressMonitor monitor) throws JiraException { >+ monitor = SubMonitor.convert(monitor, Messages.JiraClientCache_getting_priorities, 1); >+ > data.priorities = jiraClient.getPriorities(monitor); > data.prioritiesById = new HashMap<String, Priority>(data.priorities.length); > for (Priority priority : data.priorities) { >@@ -137,6 +153,8 @@ > } > > private void initializeIssueTypes(JiraClientData data, IProgressMonitor monitor) throws JiraException { >+ SubMonitor submonitor = SubMonitor.convert(monitor, Messages.JiraClientCache_getting_issue_types, 2); >+ > String version = data.serverInfo.getVersion(); > if (supportsPerProjectIssueTypes(version) >= 0) { > // collect issue types from all projects to avoid additional SOAP request >@@ -154,10 +172,10 @@ > data.issueTypesById.put(issueType.getId(), issueType); > } > } else { >- IssueType[] issueTypes = jiraClient.getIssueTypes(monitor); >+ IssueType[] issueTypes = jiraClient.getIssueTypes(submonitor.newChild(1)); > IssueType[] subTaskIssueTypes; > if (new JiraVersion(version).compareTo(JiraVersion.JIRA_3_3) >= 0) { >- subTaskIssueTypes = jiraClient.getSubTaskIssueTypes(monitor); >+ subTaskIssueTypes = jiraClient.getSubTaskIssueTypes(submonitor.newChild(1)); > } else { > subTaskIssueTypes = new IssueType[0]; > } >@@ -180,7 +198,9 @@ > } > > private void initializeStatuses(JiraClientData data, IProgressMonitor monitor) throws JiraException { >- data.statuses = jiraClient.getStatuses(monitor); >+ SubMonitor submonitor = SubMonitor.convert(monitor, Messages.JiraClientCache_getting_statuses, 1); >+ >+ data.statuses = jiraClient.getStatuses(submonitor.newChild(1)); > data.statusesById = new HashMap<String, JiraStatus>(data.statuses.length); > for (JiraStatus status : data.statuses) { > data.statusesById.put(status.getId(), status); >@@ -188,7 +208,9 @@ > } > > private void initializeResolutions(JiraClientData data, IProgressMonitor monitor) throws JiraException { >- data.resolutions = jiraClient.getResolutions(monitor); >+ SubMonitor submonitor = SubMonitor.convert(monitor, Messages.JiraClientCache_getting_resolutions, 1); >+ >+ data.resolutions = jiraClient.getResolutions(submonitor.newChild(0)); > data.resolutionsById = new HashMap<String, Resolution>(data.resolutions.length); > for (Resolution resolution : data.resolutions) { > data.resolutionsById.put(resolution.getId(), resolution); >@@ -211,48 +233,44 @@ > return data; > } > >+ public synchronized void refreshProjectDetails(String projectId, IProgressMonitor monitor) throws JiraException { >+ Project project = getProjectById(projectId); >+ if (project != null) { >+ initializeProject(project, monitor); >+ } else { >+ refreshDetails(monitor); >+ } >+ } >+ > public synchronized void refreshDetails(IProgressMonitor monitor) throws JiraException { >- try { >- monitor = Policy.monitorFor(monitor); >+ monitor = SubMonitor.convert(monitor, Messages.JiraClientCache_Updating_repository_configuration, 6); > >- // use UNKNOWN since some of the update operations block for a long time >- // TODO use InfiniteSubProgressMonitor >- monitor.beginTask(Messages.JiraClientCache_Updating_repository_configuration, IProgressMonitor.UNKNOWN); >- >- JiraClientData newData = new JiraClientData(); >- >- data.serverInfo = newData.serverInfo = jiraClient.getServerInfo(monitor); >- >- Policy.advance(monitor, 1); >- initializeProjects(newData, monitor); >- Policy.advance(monitor, 1); >- initializePriorities(newData, monitor); >- Policy.advance(monitor, 1); >- initializeIssueTypes(newData, monitor); >- Policy.advance(monitor, 1); >- initializeResolutions(newData, monitor); >- Policy.advance(monitor, 1); >- initializeStatuses(newData, monitor); >- Policy.advance(monitor, 1); >- >- newData.lastUpdate = System.currentTimeMillis(); >- this.data = newData; >- } finally { >- monitor.done(); >- } >+ final JiraClientData newData = new JiraClientData(); >+ >+ refreshServerInfo(newData, monitor); >+ data.serverInfo = newData.serverInfo; >+ >+ initializeProjects(newData, monitor); >+ initializePriorities(newData, monitor); >+ initializeIssueTypes(newData, monitor); >+ initializeResolutions(newData, monitor); >+ initializeStatuses(newData, monitor); >+ >+ newData.lastUpdate = System.currentTimeMillis(); >+ this.data = newData; > } > > /** > * Refresh any cached information with the latest values from the remote server. This operation may take a long time > * to complete and should not be called from a UI thread. > */ >+ public synchronized void refreshServerInfo(JiraClientData data, IProgressMonitor monitor) throws JiraException { >+ monitor = SubMonitor.convert(monitor, Messages.JiraClientCache_Getting_server_information, 1); >+ data.serverInfo = jiraClient.getServerInfo(monitor); >+ } >+ > public synchronized void refreshServerInfo(IProgressMonitor monitor) throws JiraException { >- try { >- monitor.beginTask(Messages.JiraClientCache_Getting_server_information, IProgressMonitor.UNKNOWN); >- data.serverInfo = jiraClient.getServerInfo(monitor); >- } finally { >- monitor.done(); >- } >+ refreshServerInfo(data, monitor); > } > > /** >Index: src/org/eclipse/mylyn/internal/jira/core/service/messages.properties >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.jira.core/src/org/eclipse/mylyn/internal/jira/core/service/messages.properties,v >retrieving revision 1.2 >diff -u -r1.2 messages.properties >--- src/org/eclipse/mylyn/internal/jira/core/service/messages.properties 24 Jul 2009 12:04:22 -0000 1.2 >+++ src/org/eclipse/mylyn/internal/jira/core/service/messages.properties 28 Sep 2009 13:18:42 -0000 >@@ -9,4 +9,11 @@ > # Tasktop Technologies - initial API and implementation > ############################################################################### > JiraClientCache_Getting_server_information=Getting server information >-JiraClientCache_Updating_repository_configuration=Updating repository configuration >+JiraClientCache_Updating_repository_configuration=Updating repository configuration (may take even 15 minutes) >+JiraClientCache_getting_issue_types=Getting issue types >+JiraClientCache_getting_priorities=Getting priorities >+JiraClientCache_getting_project_details=Getting project details >+JiraClientCache_getting_resolutions=Gettings resolutions >+JiraClientCache_getting_server_info=Getting server info >+JiraClientCache_getting_statuses=Getting statuses >+JiraClientCache_project_details_for=Getting project details for {0} >Index: src/org/eclipse/mylyn/internal/jira/core/service/Messages.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.jira.core/src/org/eclipse/mylyn/internal/jira/core/service/Messages.java,v >retrieving revision 1.1 >diff -u -r1.1 Messages.java >--- src/org/eclipse/mylyn/internal/jira/core/service/Messages.java 3 Dec 2008 05:05:46 -0000 1.1 >+++ src/org/eclipse/mylyn/internal/jira/core/service/Messages.java 28 Sep 2009 13:18:42 -0000 >@@ -28,4 +28,19 @@ > public static String JiraClientCache_Getting_server_information; > > public static String JiraClientCache_Updating_repository_configuration; >+ >+ public static String JiraClientCache_getting_issue_types; >+ >+ public static String JiraClientCache_getting_priorities; >+ >+ public static String JiraClientCache_getting_project_details; >+ >+ public static String JiraClientCache_getting_resolutions; >+ >+ public static String JiraClientCache_getting_server_info; >+ >+ public static String JiraClientCache_getting_statuses; >+ >+ public static String JiraClientCache_project_details_for; >+ > } >Index: src/org/eclipse/mylyn/internal/jira/core/IJiraConstants.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.jira.core/src/org/eclipse/mylyn/internal/jira/core/IJiraConstants.java,v >retrieving revision 1.6 >diff -u -r1.6 IJiraConstants.java >--- src/org/eclipse/mylyn/internal/jira/core/IJiraConstants.java 24 Jul 2009 12:04:22 -0000 1.6 >+++ src/org/eclipse/mylyn/internal/jira/core/IJiraConstants.java 28 Sep 2009 13:18:33 -0000 >@@ -49,6 +49,8 @@ > > public static final String ATTRIBUTE_WORKLOG_NOT_SUPPORTED = "attribute.jira.worklog-not-supported"; //$NON-NLS-1$ > >+ public static final String ATTRIBUTE_PROJECT_ID = "attribute.jira.project_id"; //$NON-NLS-1$ >+ > public static final String JIRA_DATE_FORMAT = "dd MMM yyyy HH:mm:ss z"; //$NON-NLS-1$ > > public static final String META_TYPE = "type"; //$NON-NLS-1$ >Index: src/org/eclipse/mylyn/internal/jira/core/JiraRepositoryConnector.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.mylyn/org.eclipse.mylyn.jira.core/src/org/eclipse/mylyn/internal/jira/core/JiraRepositoryConnector.java,v >retrieving revision 1.52 >diff -u -r1.52 JiraRepositoryConnector.java >--- src/org/eclipse/mylyn/internal/jira/core/JiraRepositoryConnector.java 24 Sep 2009 04:30:03 -0000 1.52 >+++ src/org/eclipse/mylyn/internal/jira/core/JiraRepositoryConnector.java 28 Sep 2009 13:18:41 -0000 >@@ -418,6 +418,26 @@ > } > > @Override >+ public void updateRepositoryConfiguration(TaskRepository taskRepository, ITask task, IProgressMonitor monitor) >+ throws CoreException { >+ >+ final String projectId = task.getAttribute(IJiraConstants.ATTRIBUTE_PROJECT_ID); >+ >+ if (projectId != null && !"".equals(projectId)) { //$NON-NLS-1$ >+ try { >+ JiraClient client = JiraClientFactory.getDefault().getJiraClient(taskRepository); >+ client.getCache().refreshProjectDetails(projectId, monitor); >+ } catch (JiraException e) { >+ IStatus status = JiraCorePlugin.toStatus(taskRepository, e); >+ trace(status); >+ throw new CoreException(status); >+ } >+ } else { >+ updateRepositoryConfiguration(taskRepository, monitor); >+ } >+ } >+ >+ @Override > public String getTaskIdPrefix() { > return "issue"; //$NON-NLS-1$ > } >@@ -484,6 +504,12 @@ > } else { > task.setAttribute(IJiraConstants.META_SUB_TASK_TYPE, Boolean.toString(false)); > } >+ >+ // add project id for Refresh Attributes (#290490) >+ attribute = taskData.getRoot().getAttribute(JiraAttribute.PROJECT.id()); >+ if (attribute != null) { >+ task.setAttribute(IJiraConstants.ATTRIBUTE_PROJECT_ID, attribute.getValue()); >+ } > } > > @Override >@@ -525,8 +551,6 @@ > > private final IProgressMonitor monitor; > >- private final ISynchronizationSession session; >- > private final JiraClient client; > > private final TaskRepository repository; >@@ -542,7 +566,6 @@ > this.repository = repository; > this.client = client; > this.collector = collector; >- this.session = session; > this.monitor = monitor; > this.maxHits = JiraUtil.getMaxSearchResults(repository); > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 290490
:
148100
|
148101
|
148231
|
148232
|
148292
|
148317
|
148318