blob: 33faaefeeeb1339b2d0703d05d4f72cab6f828f1 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014 Tasktop Technologies and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* https://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Tasktop Technologies - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.internal.tasks.core.util;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
import org.eclipse.mylyn.internal.tasks.core.RepositoryTemplateManager;
import org.eclipse.mylyn.internal.tasks.core.TaskRepositoryManager;
import org.eclipse.mylyn.internal.tasks.core.externalization.TaskListExternalizer;
import org.eclipse.mylyn.tasks.core.spi.RepositoryConnectorDescriptor;
public class RepositoryConnectorLoader {
private static final String EXTENSION_REPOSITORIES = "org.eclipse.mylyn.tasks.ui.repositories"; //$NON-NLS-1$
/**
* Plug-in ids of connector extensions that failed to load.
*/
private final ContributorBlackList blackList = new ContributorBlackList();
private final Set<RepositoryConnectorDescriptor> descriptors = new HashSet<RepositoryConnectorDescriptor>();
public ContributorBlackList getBlackList() {
return blackList;
}
public void registerConnectors(TaskRepositoryManager repositoryManager, TaskListExternalizer taskListExternalizer) {
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());
}
public void registerTemplates(TaskRepositoryManager repositoryManager,
RepositoryTemplateManager repositoryTemplateManager) {
RepositoryTemplateExtensionReader templateExtensionReader = new RepositoryTemplateExtensionReader(
repositoryManager, repositoryTemplateManager);
templateExtensionReader.loadExtensions(blackList);
}
}