diff options
-rw-r--r-- | org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchUtil.java | 82 |
1 files changed, 30 insertions, 52 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchUtil.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchUtil.java index b9b354587..eeca97068 100644 --- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchUtil.java +++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/internal/tasks/ui/search/SearchUtil.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2011 Tasktop Technologies and others. + * Copyright (c) 2010, 2013 Tasktop Technologies and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -11,11 +11,11 @@ package org.eclipse.mylyn.internal.tasks.ui.search; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IExtensionRegistry; +import java.util.List; + import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Status; +import org.eclipse.mylyn.commons.core.ExtensionPointReader; import org.eclipse.mylyn.commons.core.StatusHandler; import org.eclipse.mylyn.internal.tasks.core.ITaskList; import org.eclipse.mylyn.internal.tasks.ui.TasksUiPlugin; @@ -46,12 +46,9 @@ public class SearchUtil { } /** searchProvider extension point id */ - private static final String EXTENSION_SEARCH_PROVIDER = "org.eclipse.mylyn.tasks.ui.searchProvider"; //$NON-NLS-1$ - - private static final String EXTENSION_SEARCH_HANDLER = "org.eclipse.mylyn.tasks.ui.searchHandler"; //$NON-NLS-1$ + private static final String EXTENSION_SEARCH_PROVIDER = "searchProvider"; //$NON-NLS-1$ - /** searchProvider attribute 'class' */ - private static final String ATTR_CLASS = "class"; //$NON-NLS-1$ + private static final String EXTENSION_SEARCH_HANDLER = "searchHandler"; //$NON-NLS-1$ private static AbstractSearchProvider provider; @@ -64,33 +61,21 @@ public class SearchUtil { return provider; } - try { - IExtensionRegistry registry = Platform.getExtensionRegistry(); - - IConfigurationElement[] configurationElements = registry.getConfigurationElementsFor(EXTENSION_SEARCH_PROVIDER); - if (configurationElements.length > 0) { - if (configurationElements.length > 1) { - StatusHandler.log(new Status(IStatus.WARNING, TasksUiPlugin.ID_PLUGIN, - "More than one search provider was registered.")); //$NON-NLS-1$ - } - - IConfigurationElement providerConfiguration = configurationElements[0]; - Object object = providerConfiguration.createExecutableExtension(ATTR_CLASS); - if (object instanceof AbstractSearchProvider) { - provider = (AbstractSearchProvider) object; - return provider; - } else { - StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, - "Specified search provider is not of type AbstractSearchProvider.")); //$NON-NLS-1$ - } - } else { - StatusHandler.log(new Status(IStatus.WARNING, TasksUiPlugin.ID_PLUGIN, - "No search provider was registed. Tasks search is not available.")); //$NON-NLS-1$ - } - } catch (Throwable e) { - StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, - "Loading of searchProvider extension failed.", e)); //$NON-NLS-1$ + ExtensionPointReader<AbstractSearchProvider> reader = new ExtensionPointReader<AbstractSearchProvider>( + TasksUiPlugin.ID_PLUGIN, EXTENSION_SEARCH_PROVIDER, EXTENSION_SEARCH_PROVIDER, + AbstractSearchProvider.class); + reader.read(); + List<AbstractSearchProvider> providers = reader.getItems(); + if (providers.size() == 0) { + StatusHandler.log(new Status(IStatus.WARNING, TasksUiPlugin.ID_PLUGIN, + "No search provider was registed. Tasks search is not available.")); //$NON-NLS-1$ + } else if (providers.size() > 1) { + StatusHandler.log(new Status(IStatus.WARNING, TasksUiPlugin.ID_PLUGIN, + "More than one search provider was registered.")); //$NON-NLS-1$ } + + provider = reader.getItem(); + if (provider == null) { provider = new NullSearchProvider(); } @@ -98,24 +83,17 @@ public class SearchUtil { } public static AbstractSearchHandler createSearchHandler() { - AbstractSearchHandler searchHandler = null; - try { - IExtensionRegistry registry = Platform.getExtensionRegistry(); - - IConfigurationElement[] configurationElements = registry.getConfigurationElementsFor(EXTENSION_SEARCH_HANDLER); - if (configurationElements.length > 0) { - if (configurationElements.length > 1) { - StatusHandler.log(new Status(IStatus.WARNING, TasksUiPlugin.ID_PLUGIN, - "More than one task list search handler was registered.")); //$NON-NLS-1$ - } - - IConfigurationElement providerConfiguration = configurationElements[0]; - searchHandler = (AbstractSearchHandler) providerConfiguration.createExecutableExtension(ATTR_CLASS); - } - } catch (Throwable e) { - StatusHandler.log(new Status(IStatus.ERROR, TasksUiPlugin.ID_PLUGIN, - "Loading of searchHandler extension failed.", e)); //$NON-NLS-1$ + ExtensionPointReader<AbstractSearchHandler> reader = new ExtensionPointReader<AbstractSearchHandler>( + TasksUiPlugin.ID_PLUGIN, EXTENSION_SEARCH_HANDLER, EXTENSION_SEARCH_HANDLER, + AbstractSearchHandler.class); + reader.read(); + if (reader.getItems().size() > 1) { + StatusHandler.log(new Status(IStatus.WARNING, TasksUiPlugin.ID_PLUGIN, + "More than one task list search handler was registered.")); //$NON-NLS-1$ } + + AbstractSearchHandler searchHandler = reader.getItem(); + if (searchHandler == null) { searchHandler = new DefaultSearchHandler(); } |