bug 303397: safe-guard against multiple extensions that specify the same connector kind
https://bugs.eclipse.org/bugs/show_bug.cgi?id=303397
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 0ed5ca8..1942521 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
@@ -290,7 +290,7 @@
 		Map<String, List<ConnectorDescriptor>> descriptorByConnectorKind = new LinkedHashMap<String, List<ConnectorDescriptor>>();
 		for (ConnectorDescriptor descriptor : descriptors) {
 			IStatus status = descriptor.createConnector();
-			if (status.isOK()) {
+			if (status.isOK() && descriptor.repositoryConnector != null) {
 				add(descriptorByConnectorKind, descriptor.getConnectorKind(), descriptor);
 			} else {
 				result.add(status);
@@ -302,13 +302,15 @@
 		// register connectors
 		List<AbstractTaskListMigrator> migrators = new ArrayList<AbstractTaskListMigrator>();
 		for (ConnectorDescriptor descriptor : descriptors) {
-			TasksUiPlugin.getRepositoryManager().addRepositoryConnector(descriptor.repositoryConnector);
-			if (descriptor.migratorElement != null) {
-				IStatus status = descriptor.createMigrator();
-				if (status.isOK()) {
-					migrators.add(descriptor.migrator);
-				} else {
-					result.add(status);
+			if (descriptor.repositoryConnector != null) {
+				TasksUiPlugin.getRepositoryManager().addRepositoryConnector(descriptor.repositoryConnector);
+				if (descriptor.migratorElement != null) {
+					IStatus status = descriptor.createMigrator();
+					if (status.isOK() && descriptor.migrator != null) {
+						migrators.add(descriptor.migrator);
+					} else {
+						result.add(status);
+					}
 				}
 			}
 		}