diff options
author | Steffen Pingel | 2014-03-25 14:29:45 +0000 |
---|---|---|
committer | Steffen Pingel | 2014-03-26 09:22:34 +0000 |
commit | c88adbabaed4aba155426669690fa4a8297ab8d9 (patch) | |
tree | b8df4ea56e5a9125ffad0b4c42962fa0c21bec76 /org.eclipse.mylyn.tasks.ui | |
parent | 604234eb263e3bf3981a715500d36e5d7be293be (diff) | |
download | org.eclipse.mylyn.tasks-c88adbabaed4aba155426669690fa4a8297ab8d9.tar.gz org.eclipse.mylyn.tasks-c88adbabaed4aba155426669690fa4a8297ab8d9.tar.xz org.eclipse.mylyn.tasks-c88adbabaed4aba155426669690fa4a8297ab8d9.zip |
316253: move connector extension loading into core
Change-Id: Iba3b445736d552825e095a3e35ace3a304af4e86
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=316253
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui')
2 files changed, 29 insertions, 139 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPlugin.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPlugin.java index dcf5828a4..dc9a76fae 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPlugin.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/TasksUiPlugin.java @@ -86,6 +86,7 @@ import org.eclipse.mylyn.internal.tasks.core.externalization.IExternalizationPar import org.eclipse.mylyn.internal.tasks.core.externalization.TaskActivationExternalizationParticipant; import org.eclipse.mylyn.internal.tasks.core.externalization.TaskListExternalizationParticipant; import org.eclipse.mylyn.internal.tasks.core.externalization.TaskListExternalizer; +import org.eclipse.mylyn.internal.tasks.core.util.RepositoryConnectorLoader; import org.eclipse.mylyn.internal.tasks.core.util.TaskRepositoryKeyringMigrator; import org.eclipse.mylyn.internal.tasks.core.util.TaskRepositorySecureStoreMigrator; import org.eclipse.mylyn.internal.tasks.core.util.TasksCoreExtensionReader; @@ -281,68 +282,6 @@ public class TasksUiPlugin extends AbstractUIPlugin { } }; -// private static ITaskListNotificationProvider INCOMING_NOTIFICATION_PROVIDER = new ITaskListNotificationProvider() { -// -// @SuppressWarnings( { "deprecation", "restriction" }) -// public Set<AbstractNotification> getNotifications() { -// Set<AbstractNotification> notifications = new HashSet<AbstractNotification>(); -// // Incoming Changes -// for (TaskRepository repository : getRepositoryManager().getAllRepositories()) { -// AbstractRepositoryConnector connector = getRepositoryManager().getRepositoryConnector( -// repository.getConnectorKind()); -// if (connector instanceof AbstractLegacyRepositoryConnector) { -// AbstractRepositoryConnectorUi connectorUi = getConnectorUi(repository.getConnectorKind()); -// if (connectorUi != null && !connectorUi.hasCustomNotifications()) { -// for (ITask itask : TasksUiPlugin.getTaskList().getTasks(repository.getRepositoryUrl())) { -// if (itask instanceof AbstractTask) { -// AbstractTask task = (AbstractTask) itask; -// if ((task.getLastReadTimeStamp() == null || task.getSynchronizationState() == SynchronizationState.INCOMING) -// && task.isNotified() == false) { -// TaskListNotification notification = LegacyChangeManager.getIncommingNotification( -// connector, task); -// notifications.add(notification); -// task.setNotified(true); -// } -// } -// } -// } -// } -// } -// // New query hits -// for (RepositoryQuery query : TasksUiPlugin.getTaskList().getQueries()) { -// TaskRepository repository = getRepositoryManager().getRepository(query.getRepositoryUrl()); -// if (repository != null) { -// AbstractRepositoryConnector connector = getRepositoryManager().getRepositoryConnector( -// repository.getConnectorKind()); -// if (connector instanceof AbstractLegacyRepositoryConnector) { -// AbstractRepositoryConnectorUi connectorUi = getConnectorUi(repository.getConnectorKind()); -// if (!connectorUi.hasCustomNotifications()) { -// for (ITask hit : query.getChildren()) { -// if (((AbstractTask) hit).isNotified() == false) { -// notifications.add(new TaskListNotificationQueryIncoming(hit)); -// ((AbstractTask) hit).setNotified(true); -// } -// } -// } -// } -// } -// } -// return notifications; -// } -// }; - -// private final IPropertyChangeListener PREFERENCE_LISTENER = new IPropertyChangeListener() { -// -// public void propertyChange(PropertyChangeEvent event) { -// // TODO: do we ever get here? -//// if (event.getProperty().equals(ContextPreferenceContstants.PREF_DATA_DIR)) { -//// if (event.getOldValue() instanceof String) { -//// reloadDataDirectory(); -//// } -//// } -// } -// }; - private final org.eclipse.jface.util.IPropertyChangeListener PROPERTY_LISTENER = new org.eclipse.jface.util.IPropertyChangeListener() { public void propertyChange(org.eclipse.jface.util.PropertyChangeEvent event) { @@ -392,6 +331,8 @@ public class TasksUiPlugin extends AbstractUIPlugin { private SynchronizationManger synchronizationManger; + private RepositoryConnectorLoader connectorLoader; + private class TasksUiInitializationJob extends UIJob { public TasksUiInitializationJob() { @@ -408,7 +349,7 @@ public class TasksUiPlugin extends AbstractUIPlugin { try { // Needs to run after workbench is loaded because it // relies on images. - TasksUiExtensionReader.initWorkbenchUiExtensions(); + TasksUiExtensionReader.initWorkbenchUiExtensions(connectorLoader.getBlackList()); if (externalizationManager.getLoadStatus() != null) { // XXX: recovery from task list load failure (Rendered in task list) @@ -634,7 +575,10 @@ public class TasksUiPlugin extends AbstractUIPlugin { // NOTE: initializing extensions in start(..) has caused race // conditions previously - TasksUiExtensionReader.initStartupExtensions(taskListExternalizer, repositoryManager); + connectorLoader = new RepositoryConnectorLoader(); + connectorLoader.registerConnectors(repositoryManager, taskListExternalizer); + connectorLoader.registerTemplates(repositoryManager, repositoryTemplateManager); + TasksUiExtensionReader.initStartupExtensions(connectorLoader.getBlackList()); // instantiate taskDataManager TaskDataStore taskDataStore = new TaskDataStore(repositoryManager); diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiExtensionReader.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiExtensionReader.java index 2112be840..eb6c74e43 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiExtensionReader.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/util/TasksUiExtensionReader.java @@ -11,9 +11,6 @@ package org.eclipse.mylyn.internal.tasks.ui.util; -import java.util.HashSet; -import java.util.Set; - import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtension; import org.eclipse.core.runtime.IExtensionPoint; @@ -23,19 +20,13 @@ import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Status; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.mylyn.commons.core.StatusHandler; -import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryManager; -import org.eclipse.mylyn.internal.tasks.core.externalization.TaskListExternalizer; import org.eclipse.mylyn.internal.tasks.core.util.ContributorBlackList; -import org.eclipse.mylyn.internal.tasks.core.util.RepositoryConnectorExtensionReader; -import org.eclipse.mylyn.internal.tasks.core.util.RepositoryTemplateExtensionReader; import org.eclipse.mylyn.internal.tasks.ui.IDynamicSubMenuContributor; import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; import org.eclipse.mylyn.internal.tasks.ui.views.AbstractTaskListPresentation; import org.eclipse.mylyn.internal.tasks.ui.views.TaskListView; import org.eclipse.mylyn.tasks.core.AbstractDuplicateDetector; -import org.eclipse.mylyn.tasks.core.spi.RepositoryConnectorDescriptor; import org.eclipse.mylyn.tasks.ui.AbstractTaskRepositoryLinkProvider; -import org.eclipse.mylyn.tasks.ui.TasksUi; import org.eclipse.mylyn.tasks.ui.editors.AbstractTaskEditorPageFactory; import org.eclipse.ui.plugin.AbstractUIPlugin; @@ -47,24 +38,12 @@ import org.eclipse.ui.plugin.AbstractUIPlugin; */ public class TasksUiExtensionReader { - public static final String EXTENSION_REPOSITORIES = "org.eclipse.mylyn.tasks.ui.repositories"; //$NON-NLS-1$ - public static final String EXTENSION_REPOSITORY_LINKS_PROVIDERS = "org.eclipse.mylyn.tasks.ui.projectLinkProviders"; //$NON-NLS-1$ public static final String ELMNT_REPOSITORY_LINK_PROVIDER = "linkProvider"; //$NON-NLS-1$ - public static final String ELMNT_REPOSITORY_UI = "connectorUi"; //$NON-NLS-1$ - - public static final String ELMNT_TYPE = "type"; //$NON-NLS-1$ - - public static final String ELMNT_QUERY_PAGE = "queryPage"; //$NON-NLS-1$ - - public static final String ELMNT_SETTINGS_PAGE = "settingsPage"; //$NON-NLS-1$ - public static final String EXTENSION_TASK_CONTRIBUTOR = "org.eclipse.mylyn.tasks.ui.actions"; //$NON-NLS-1$ - public static final String ATTR_ACTION_CONTRIBUTOR_CLASS = "taskHandlerClass"; //$NON-NLS-1$ - public static final String DYNAMIC_POPUP_ELEMENT = "dynamicPopupMenu"; //$NON-NLS-1$ public static final String ATTR_CLASS = "class"; //$NON-NLS-1$ @@ -85,75 +64,42 @@ public class TasksUiExtensionReader { private static final String EXTENSION_PRESENTATIONS = "org.eclipse.mylyn.tasks.ui.presentations"; //$NON-NLS-1$ - public static final String ELMNT_PRESENTATION = "presentation"; //$NON-NLS-1$ - public static final String ATTR_ICON = "icon"; //$NON-NLS-1$ public static final String ATTR_PRIMARY = "primary"; //$NON-NLS-1$ public static final String ATTR_ID = "id"; //$NON-NLS-1$ - private static boolean coreExtensionsRead = false; - - /** - * Plug-in ids of connector extensions that failed to load. - */ - private static ContributorBlackList blackList = new ContributorBlackList(); - - private static Set<RepositoryConnectorDescriptor> descriptors = new HashSet<RepositoryConnectorDescriptor>(); - - public static void initStartupExtensions(TaskListExternalizer taskListExternalizer, - TaskRepositoryManager repositoryManager) { - if (!coreExtensionsRead) { - IExtensionRegistry registry = Platform.getExtensionRegistry(); - - // NOTE: has to be read first, consider improving - RepositoryConnectorExtensionReader reader = new RepositoryConnectorExtensionReader(taskListExternalizer, - repositoryManager); - // load core extension point - reader.loadConnectorsFromRepositoriesExtension(); - // load legacy ui extension point - reader.loadConnectors(registry.getExtensionPoint(EXTENSION_REPOSITORIES)); - // load connectors contributed at runtime - reader.loadConnectorsFromContributors(); - reader.registerConnectors(); - descriptors.addAll(reader.getDescriptors()); - blackList.merge(reader.getBlackList()); - - RepositoryTemplateExtensionReader templateExtensionReader = new RepositoryTemplateExtensionReader( - TasksUi.getRepositoryManager(), TasksUiPlugin.getRepositoryTemplateManager()); - templateExtensionReader.loadExtensions(blackList); - - IExtensionPoint presentationsExtensionPoint = registry.getExtensionPoint(EXTENSION_PRESENTATIONS); - IExtension[] presentations = presentationsExtensionPoint.getExtensions(); - for (IExtension presentation : presentations) { - IConfigurationElement[] elements = presentation.getConfigurationElements(); - for (IConfigurationElement element : elements) { - if (!blackList.isDisabled(element)) { - readPresentation(element); - } + public static void initStartupExtensions(ContributorBlackList blackList) { + IExtensionRegistry registry = Platform.getExtensionRegistry(); + + IExtensionPoint presentationsExtensionPoint = registry.getExtensionPoint(EXTENSION_PRESENTATIONS); + IExtension[] presentations = presentationsExtensionPoint.getExtensions(); + for (IExtension presentation : presentations) { + IConfigurationElement[] elements = presentation.getConfigurationElements(); + for (IConfigurationElement element : elements) { + if (!blackList.isDisabled(element)) { + readPresentation(element); } } + } - // NOTE: causes ..mylyn.context.ui to load - IExtensionPoint editorsExtensionPoint = registry.getExtensionPoint(EXTENSION_EDITORS); - IExtension[] editors = editorsExtensionPoint.getExtensions(); - for (IExtension editor : editors) { - IConfigurationElement[] elements = editor.getConfigurationElements(); - for (IConfigurationElement element : elements) { - if (!blackList.isDisabled(element)) { - if (element.getName().equals(ELMNT_TASK_EDITOR_PAGE_FACTORY)) { - readTaskEditorPageFactory(element); - } + // NOTE: causes ..mylyn.context.ui to load + IExtensionPoint editorsExtensionPoint = registry.getExtensionPoint(EXTENSION_EDITORS); + IExtension[] editors = editorsExtensionPoint.getExtensions(); + for (IExtension editor : editors) { + IConfigurationElement[] elements = editor.getConfigurationElements(); + for (IConfigurationElement element : elements) { + if (!blackList.isDisabled(element)) { + if (element.getName().equals(ELMNT_TASK_EDITOR_PAGE_FACTORY)) { + readTaskEditorPageFactory(element); } } } - - coreExtensionsRead = true; } } - public static void initWorkbenchUiExtensions() { + public static void initWorkbenchUiExtensions(ContributorBlackList blackList) { IExtensionRegistry registry = Platform.getExtensionRegistry(); RepositoryConnectorUiExtensionReader reader = new RepositoryConnectorUiExtensionReader(registry, blackList); |