Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Mylyn/Porting Guide/3.0
Contents
Migrating from Mylyn 2.x to 3.0
Note: This porting guide is work in progress. Feel free to add contents.
This porting guide is intended to support developers porting connectors from Mylyn 2.x to Mylyn 3.x. In addition to the abbreviated pseudo code examples in this guide it is recommended to refer to the Bugzilla, Trac and JIRA connector implementations that are part of the Mylyn code base.
Migrating Tasks and Queries
In Mylyn 3.0 the data model of the task list has changed. Elements in the task list are now managed by the tasks framework and connectors do not extend AbstractTask or AbstractRepositoryQuery with their own implementation. Task list externalization that previously required connectors to provide an implementation of AbstractTaskListFactory is now encapsulated in the framework.
In order to migrate the Mylyn 2.x tasklist.xml.zip to the new tasks.xml.zip file connectors need to extend AbstractTaskListMigrator. When a Mylyn 2.x task list is read the migrator is invoked for migrating query and tasks elements. The migration is only done once. The task list migrator is registered through the org.eclipse.mylyn.tasks.ui.repositories extension point:
<extension id="org.eclipse.mylyn.web.repository" name="Generic web-based access (Advanced)" point="org.eclipse.mylyn.tasks.ui.repositories"> <connectorCore ... /> <connectorUi ... /> <taskListFactory class="org.eclipse.mylyn.internal.web.tasks.WebTaskListFactory" id="org.eclipse.mylyn.web.tasklist.taskListFactory"/> </extension> |
<extension id="org.eclipse.mylyn.web.repository" name="Generic web-based access (Advanced)" point="org.eclipse.mylyn.tasks.ui.repositories"> <connectorCore ... /> <connectorUi ... /> <taskListMigrator class="org.eclipse.mylyn.internal.web.tasks.WebTaskListMigrator"> </taskListMigrator> </extension> |
The implementating of AbstractTaskListFactory.createTask() has moved to AbstractTaskListMigrator.migrateTask(). Instead of creating an instance of a custom task class connector set custom state on task classes through the setAttribute() method.
Whether task data is up to date is now managed by the connector. The reference implementations use the last modification time stamp of task data to determine if a task is stale. In Mylyn 2.x the last modification time stamp was not stored in the task list but the last read time stamp which is the connector specific string that was stored in the DATE_MODIFICATION attribute on task data was set on a task when it was opened. The last read time stamp is not used anymore and must be migrated if connectors intend to use this as the last modification time stamp. Please note that the last read time stamp may not be set or not accurately reflect the last modification stamp of the latest downloaded task, e.g. when a task is new or when the latest state has not been read.
Connectors that used to override AbstractTask.getTaskKey() need to explicitly set the task key during migration. It is initialized to the task id by default:
class JiraTaskListMigrator { @Override public void migrateTask(ITask task, Element element) { task.setModificationDate(JiraUtil.stringToDate(element.getAttribute(KEY_LAST_MOD_DATE))); task.setTaskKey(element.getAttribute(KEY_KEY)); }
Connectors that used to override AbstractTask.isLocal() must now implement AbstractRepositoryConnector.hasLocalCompletionState() instead.
Tip: AbstractTaskListFactory contains most of the information necessary to implement AbstractTaskListMigrator. For the migrateTask() and migrateQuery() methods, any data you use to set on your connector specific element must now be set as attributes on either the task or query being migrated. Use the task.setAttribute(String, String) method to set your connector specific key value pairs.
API Changes
Plug-in Refactorings
-
org.eclipse.mylyn.web.core
is noworg.eclipse.mylyn.commons.net
- Core classes from
org.eclipse.mylyn.monitor.core
was split in order to make API not coupled to the Monitor component be reusable independently, now in the neworg.eclipse.mylyn.commons.core
plug-in. -
org.eclipse.mylyn.commons.ui
is a new API for common UI components that are not coupled to the rest of Mylyn.
Changed Extension Points
-
org.eclipse.mylyn.tasks.ui.editors
-
hyperLinkDetector
has been removed, useorg.eclipse.ui.workbench.texteditor.hyperlinkDetectors
instead and settargetId
toorg.eclipse.mylyn.tasks.ui.TaskEditor
-
editorFactory
has been removed, usepageFactory
instead
-
-
repositories
-
taskListFactory
has been removed, usetaskListMirgrator
instead -
connectorCore
-
userManaged
has been removed, overrideisUserManaged()
inAbstractRepositoryConnector
instead
-
-
connectorUi
-
customNotifications
has been removed, overrideisCustomNotification()
inAbstractRepositoryConnectorUi
instead
-
-
New Context API
-
AbstractFocusViewAction.updateEnablementWithContextActivation()
: override to return false for focus actions that are not related to context activations (e.g. the Task List).
-
AbstractFocusViewAction.setLinkingActionEnabled(boolean)
: should be overridden if view provides linking
Removed Context API
-
ActivityTimerThread
has been removed -
BrowseFilteredAction
has been moved to an internal package -
ContextCorePlugin
has been moved to an internal package and replaced byContextCore
-
ContextUiPlugin
has been moved to an internal package and replaced byContextUi
-
IActivityTimerListener
has been removed -
IInteractionContextListener
has been renamed toAbstractContextListener
-
InteractionContextReader
has been moved to an internal package -
InteractionContextWriter
has been moved to an internal package -
MonitorUiPlugin
has been moved to an internal package and replaced byMonitorUi
-
ResourcesUiPlugin
has been moved to an internal package and replaced byResourcesUi
- The active/auto folding preference has been removed, you can reuse the one from JavaUiBridgePlugin or use your own preference
New Monitor API
-
MonitorUiPlugin.getMonitoredWindows()
: use insteand ofPlatformUI.getWorkbench().getWorkbenchWindows()
-
MonitorUiPlugin.getLaunchingWorkbenchWindow()
: use to get the first active window when the monitor started.
Removed Monitor API
-
IMylarMonitorLifecycleListener
has been renamed toIMonitorLifecycleListener
-
ReportGenerator
has been moved to an internal package
Changed Team API
-
org.eclipse.mylyn.tasks.core.ILinkedTaskInfo
is noworg.eclipse.mylyn.team.ui.AbstractTaskReference
-
getComment()
has been renamed togetText()
-
Removed Tasks API
Some deprecated types and methods have been moved to the internal package org.eclipse.mylyn.internal.tasks.core.deprecated
. This package is not intended as a backwards compatibility layer and is expected to be removed as part of the 3.1 release.
-
AbstractAttachmentHandler
has been removed, useAbstractTaskAttachmentHandler
instead-
MESSAGE_ATTACHMENTS_NOT_SUPPORTED
has been removed -
MYLAR_CONTEXT_DESCRIPTION
has been removed -
MYLAR_CONTEXT_DESCRIPTION_LEGACY
has been removed -
MYLAR_CONTEXT_FILENAME
has been removed -
attachContextAttachments()
has been moved to the internal classAttachmentUtil
-
getContextAttachments()
has been moved to the internal classAttachmentUtil
-
hasRepositoryContext()
has been moved to the internal classAttachmentUtil
-
retrieveContext()
has been moved to the internal classAttachmentUtil
-
-
AbstractAttributeFactory
has been removed, useTaskAttributeMapper
instead
-
AbstractDuplicateDetector
has been moved to tasks.core
-
AbstractEditQueryWizard
has been renamed toAbstractRepositoryQueryWizard
-
AbstractNewRepositoryTaskEditor
has been removed, useAbstractTaskEditorPage
instead
-
AbstractRepositoryConnector
-
init()
has been removed -
getAttachmentHandler()
has been renamed togetTaskAttachmentHandler()
-
createTaskFromExistingId()
has been removed -
createTaskFromTaskData()
has been removed, useupdateTaskFromTaskData()
instead -
createTask()
has been removed, useRepositoryModel.createTask()
instead -
getPepositoryPropertyNames()
has been removed -
getTemplate()
has been removed, useRepositoryTemplateManager
instead -
hasTaskPropertyChanged()
has been removed -
updateTaskFromRepository()
has been removed, useupdateTaskFromTaskData()
instead -
updateTaskFromQueryHit()
has been removed, useupdateTaskFromTaskData()
instead -
markStaleTasks()
has been removed, overridepreSynchronization()
instead -
removeTemplate()
has been removed, useRepositoryTemplateManager
instead -
updateAttributes()
has been renamed toupdateRepositoryConfiguration()
-
setUserManaged()
has been removed, overrideisUserManaged()<code> instead
-
- <code>AbstractRepositoryConnectorUi
-
forceSubtaskHierarchy()
has been removed, overridehasStrictSubtaskHierarchy()
instead -
getLegendItems()
has been renamed togetLegendElements()
-
getNewTaskWizard(TaskRepository)
has been removed, usegetNewTaskWizard(TaskRepository, ITaskMapping)
instead -
getTaskKindLabel(RepositoryTaskData)
has been removed -
getTaskListElementIcon()
has been removed, overridegetImageDescriptor()
instead -
isCustomNotificationHandling()
has been removed, overridehasCustomNotificationHandling()
instead -
openEditQueryDialog(AbstractRepositoryQuery)
has been moved to the internal classTasksUiInternal
-
openRepositoryTask()
has been moved to the internal classTasksUiInternal
-
setCustomNotificationHandling()
has been removed, overridehasCustomNotificationHandling()
instead -
supportsDueDates(AbstractTask)
has been removed, overrideAbstractRepositoryConnector.hasRepositoryDueDate()
instead
-
-
AbstractRepositoryQuery
has been removed, useIRepositoryQuery
instead-
getRepositoryKind()
has been renamed togetConnectorKind()
-
-
AbstractRepositoryQueryPage
has been moved toorg.eclipse.mylyn.tasks.ui.wizards
-
AbstractRepositoryTaskEditor
has been removed, useAbstractTaskEditorPage
instead
-
AbstractRepositoryQueryWizard
has been removed, useRepositoryQueryWizard
instead
-
AbstractTask
has been removed, useITask
instead-
hasValidUrl()
has been moved toTasksUiInternal.isValidUrl()
-
setCompleted()
has been removed, a non-null completion date indicates a task is complete
-
-
AttributeContainer
has been removed, useTaskAttribute
instead
-
AuthenticatedProxy
has been moved to an internal package
-
DatePicker
has been moved toorg.eclipse.mylyn.commons.ui
-
DateSelectionDialog
has been moved toorg.eclipse.mylyn.commons.ui
-
FileAttachment
has been removed, useAbstractTaskAttachmentSource
instead
-
GzipGetMethod
has been moved to an internal package
-
GzipPostMethod
has been moved to an internal package
-
IStatusHandler
has been removed, useAbstractErrorReporter
instead
-
ITaskCollector
has been removed, useTaskDataCollector
instead
-
ITaskFactory
has been removed
-
ITaskRepositoryListener
has been renamed toIRepositoryListener
-
ITaskListChangeListener
has been moved to an internal package
-
NewTaskEditorInput
has been removed, useTaskEditorInput
instead
-
QueryHitCollector
has been removed, useTaskDataCollector
instead
-
RepositoryAttachment
has been removed, useTaskAttachmentMapper
instead
-
RepositoryOperation
has been removed, useTaskOperationMapper
instead
-
RepositorySearchResult
has been moved to an internal package
-
RepositoryTaskData
has been removed, useTaskData
instead
-
RepositoryTaskEditorInput
has been removed, useTaskEditorInput
instead
-
SearchHitCollector
has been moved to an internal package
-
SslProtocolSocketFactory
has been moved to an internal package
-
StatusHandler
-
addDefaultStatusHandler(IStatusHandler)
has been removed -
addStatusHandler(IStatusHandler)
has been removed -
fail(Throwable,String,boolean)
has been removed -
fail(Throwable,String,boolean,int)
has been removed -
getDefaultStatusHandler()
has been removed -
getStatusHandler()
has been removed -
log(String,Object)
has been removed -
log(Throwable,String)
has been removed -
setDefaultStatusHandler(IStatusHandler)
has been removed -
removeStatusHandler(IStatusHandler)
has been removed
-
-
TaskActivityManager
-
getInstance()
has been removed, useTasksUiPlugin.getTaskActivityManager()
instead -
init()
has been replaced by a public constructor
-
-
TaskFormPage
-
actionContributor
has been removed
-
-
TaskFactory
has been removed
-
TaskListManager
has been moved to an internal package and replaced byITaskListManager
- task activity related methods have been removed (see
TaskActivityManager
)
- task activity related methods have been removed (see
-
TaskRepositoryManager
has been moved to an internal package and replaced byITaskRepositoryManager
-
TaskEditor
-
configureContextMenuManager(MenuManager,TextViewer)
has been removed -
getAdapterDelegate()
has been removed -
getContributor()
has been removed -
refreshEditorContents()
has been renamed torefreshPages()
-
-
TaskList
has been moved to an internal package and replaced byITaskList
-
TaskSelection
has been removed, useITaskMapping
instead
-
TasksUiProxyChangeListener
has been removed
-
TasksUiUtil
-
closeEditorInActivePage(ITask,boolean)
has been moved to the internal classTasksUiInternal
-
getActiveRepositoryTaskEditor()
has been moved to the internal classTasksUiInternal
-
isAnimationsEnabled()
has been moved to the internal classTasksUiInternal
-
openEditor(TaskCategory)
has been moved to the internal classTasksUiInternal
-
openEditor(AbstractTask, boolean)
has been replaced byopenTask(ITask)
-
openEditor(AbstractTask, boolean, boolean)
has been replaced byopenTask(ITask)
-
openEditor(AbstractTask, String)
has been replaced byopenTask(ITask)
-
openUrl(String, boolean)
has been replaced byopenTask(String)
andopenUrl(String)
-
refreshAndOpenTaskListElement()
has been moved to the internal classTasksUiInternal
-
showPreferencesPage(String, IPreferencePAge)
has been removed
-
-
TrustAllTrustManager
has been moved to an internal package
-
WebClientLog
has been removed
-
WebClientUtil
has been removed, useWebUtil
instead
-
WebCorePlugin
has been moved to an internal package
-
WebHyperlink
has been moved to an internal package