[bugzilla 384447] Refactoring the IntentRepositoryManagerContribution extensiblity : now using extension points
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/plugin.xml b/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/plugin.xml
index 837dd92..dc46364 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/plugin.xml
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/plugin.xml
@@ -101,5 +101,11 @@
repositoryStructurerClass="org.eclipse.mylyn.docs.intent.client.ui.cdo.repository.IntentRepositoryCDORestructurer">
</Repository>
</extension>
+ <extension
+ point="org.eclipse.mylyn.docs.intent.collab.common.repositorymanagercontribution">
+ <repositorymanagercontribution
+ class="org.eclipse.mylyn.docs.intent.client.ui.cdo.repository.IntentCDOBasedRepositoryManagerContribution">
+ </repositorymanagercontribution>
+ </extension>
</plugin>
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/src/org/eclipse/mylyn/docs/intent/client/ui/cdo/Activator.java b/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/src/org/eclipse/mylyn/docs/intent/client/ui/cdo/Activator.java
index c4bea0a..aca1d21 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/src/org/eclipse/mylyn/docs/intent/client/ui/cdo/Activator.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/src/org/eclipse/mylyn/docs/intent/client/ui/cdo/Activator.java
@@ -11,8 +11,6 @@
package org.eclipse.mylyn.docs.intent.client.ui.cdo;
import org.eclipse.emf.cdo.util.CDOUtil;
-import org.eclipse.mylyn.docs.intent.client.ui.cdo.repository.IntentCDOBasedRepositoryManagerContribution;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManager;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
@@ -29,8 +27,6 @@
// The shared instance
private static Activator plugin;
- private IntentCDOBasedRepositoryManagerContribution repositoryManagerContribution;
-
/**
* The Activator constructor.
*/
@@ -46,11 +42,6 @@
super.start(context);
plugin = this;
- // Register the RepositoryManagerContribution allowing to handle CDORepositories
- repositoryManagerContribution = new IntentCDOBasedRepositoryManagerContribution();
- IntentRepositoryManager.INSTANCE
- .addIntentRepositoryManagerContribution(repositoryManagerContribution);
-
// Allow legacy mode, in case Modeling Units describe non cdo-native models (like ECore)
CDOUtil.setLegacyModeDefault(true);
}
@@ -63,10 +54,6 @@
public void stop(BundleContext context) throws Exception {
plugin = null;
super.stop(context);
-
- // Unregister the RepositoryManagerContribution allowing to handle IProject
- IntentRepositoryManager.INSTANCE
- .removeIntentRepositoryManagerContribution(repositoryManagerContribution);
}
/**
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/src/org/eclipse/mylyn/docs/intent/client/ui/cdo/handlers/InitializeContent.java b/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/src/org/eclipse/mylyn/docs/intent/client/ui/cdo/handlers/InitializeContent.java
index ea2e91a..70bbbed 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/src/org/eclipse/mylyn/docs/intent/client/ui/cdo/handlers/InitializeContent.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/src/org/eclipse/mylyn/docs/intent/client/ui/cdo/handlers/InitializeContent.java
@@ -13,7 +13,7 @@
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryInitializer;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryInitializer;
/**
* Handler that print a widget allowing the user to select the Intent element to open.
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/src/org/eclipse/mylyn/docs/intent/client/ui/cdo/handlers/ShowIndexHandler.java b/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/src/org/eclipse/mylyn/docs/intent/client/ui/cdo/handlers/ShowIndexHandler.java
index 63a8f25..29a1384 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/src/org/eclipse/mylyn/docs/intent/client/ui/cdo/handlers/ShowIndexHandler.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/src/org/eclipse/mylyn/docs/intent/client/ui/cdo/handlers/ShowIndexHandler.java
@@ -15,7 +15,7 @@
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.mylyn.docs.intent.client.ui.utils.IntentEditorOpener;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManager;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.repository.RepositoryConnectionException;
/**
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/src/org/eclipse/mylyn/docs/intent/client/ui/cdo/launcher/IntentCDOManager.java b/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/src/org/eclipse/mylyn/docs/intent/client/ui/cdo/launcher/IntentCDOManager.java
index 45fa208..bb0fe07 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/src/org/eclipse/mylyn/docs/intent/client/ui/cdo/launcher/IntentCDOManager.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/src/org/eclipse/mylyn/docs/intent/client/ui/cdo/launcher/IntentCDOManager.java
@@ -23,9 +23,9 @@
import org.eclipse.mylyn.docs.intent.client.synchronizer.SynchronizerRepositoryClient;
import org.eclipse.mylyn.docs.intent.client.synchronizer.launcher.SynchronizerCreator;
import org.eclipse.mylyn.docs.intent.client.synchronizer.listeners.GeneratedElementListener;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.common.logger.IIntentLogger.LogType;
import org.eclipse.mylyn.docs.intent.collab.common.logger.IntentLogger;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.handlers.adapters.ReadOnlyException;
import org.eclipse.mylyn.docs.intent.collab.repository.Repository;
import org.eclipse.mylyn.docs.intent.collab.repository.RepositoryConnectionException;
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/src/org/eclipse/mylyn/docs/intent/client/ui/cdo/repository/IntentCDOBasedRepositoryManagerContribution.java b/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/src/org/eclipse/mylyn/docs/intent/client/ui/cdo/repository/IntentCDOBasedRepositoryManagerContribution.java
index 484bfda..89c1d1f 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/src/org/eclipse/mylyn/docs/intent/client/ui/cdo/repository/IntentCDOBasedRepositoryManagerContribution.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.ui.cdo/src/org/eclipse/mylyn/docs/intent/client/ui/cdo/repository/IntentCDOBasedRepositoryManagerContribution.java
@@ -12,7 +12,7 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.mylyn.docs.intent.collab.cdo.repository.CDOConfig;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManagerContribution;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.contribution.IntentRepositoryManagerContribution;
import org.eclipse.mylyn.docs.intent.collab.handlers.adapters.RepositoryStructurer;
import org.eclipse.mylyn.docs.intent.collab.repository.Repository;
import org.eclipse.mylyn.docs.intent.collab.repository.RepositoryConnectionException;
@@ -30,7 +30,7 @@
/**
* {@inheritDoc}
*
- * @see org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManagerContribution#canCreateRepository(java.lang.String)
+ * @see org.eclipse.mylyn.docs.intent.collab.common.repository.contribution.IntentRepositoryManagerContribution#canCreateRepository(java.lang.String)
*/
public boolean canCreateRepository(String identifier) {
return identifier.contains("cdo:/");
@@ -39,7 +39,7 @@
/**
* {@inheritDoc}
*
- * @see org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManagerContribution#createRepository(java.lang.String)
+ * @see org.eclipse.mylyn.docs.intent.collab.common.repository.contribution.IntentRepositoryManagerContribution#createRepository(java.lang.String)
*/
public Repository createRepository(String identifier) throws RepositoryConnectionException {
String repositoryType = "org.eclipse.mylyn.docs.intent.collab.cdo.repository";
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/plugin.xml b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/plugin.xml
index 62c7d3c..2701c19 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/plugin.xml
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/plugin.xml
@@ -293,6 +293,12 @@
type="java.lang.Object">
</propertyTester>
</extension>
+ <extension
+ point="org.eclipse.mylyn.docs.intent.collab.common.repositorymanagercontribution">
+ <repositorymanagercontribution
+ class="org.eclipse.mylyn.docs.intent.client.ui.ide.repository.IntentProjectBasedRepositoryManagerContribution">
+ </repositorymanagercontribution>
+ </extension>
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/Activator.java b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/Activator.java
index 128d1c5..5c27097 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/Activator.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/Activator.java
@@ -17,9 +17,6 @@
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.mylyn.docs.intent.client.ui.ide.builder.IntentProjectListener;
-import org.eclipse.mylyn.docs.intent.client.ui.ide.repository.IntentProjectBasedRepositoryManagerContribution;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManager;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManagerContribution;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
@@ -45,8 +42,6 @@
*/
private static Activator plugin;
- private IntentRepositoryManagerContribution repositoryManagerContribution;
-
/**
* The constructor.
*/
@@ -62,11 +57,6 @@
super.start(context);
plugin = this;
- // Register the RepositoryManagerContribution allowing to handle IProject
- repositoryManagerContribution = new IntentProjectBasedRepositoryManagerContribution();
- IntentRepositoryManager.INSTANCE
- .addIntentRepositoryManagerContribution(repositoryManagerContribution);
-
// Awakes the listener if necessary
final Job activateListenerJob = new Job("Activating intent projects listener") {
@Override
@@ -91,10 +81,6 @@
IWorkspace workspace = ResourcesPlugin.getWorkspace();
workspace.removeResourceChangeListener(intentProjectListener);
- // Unregister the RepositoryManagerContribution allowing to handle IProject
- IntentRepositoryManager.INSTANCE
- .removeIntentRepositoryManagerContribution(repositoryManagerContribution);
-
plugin = null;
super.stop(context);
}
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/builder/IntentBuilderDeltaVisitor.java b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/builder/IntentBuilderDeltaVisitor.java
index 3bcea33..1b5ebc9 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/builder/IntentBuilderDeltaVisitor.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/builder/IntentBuilderDeltaVisitor.java
@@ -21,7 +21,7 @@
import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.core.resources.IResourceDeltaVisitor;
import org.eclipse.core.runtime.CoreException;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManager;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryManager;
/**
* Visitor used by the Intent builder.
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/navigator/OpenEditorAction.java b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/navigator/OpenEditorAction.java
index 4b161da..6d41063 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/navigator/OpenEditorAction.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/navigator/OpenEditorAction.java
@@ -20,7 +20,7 @@
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.mylyn.docs.intent.client.ui.logger.IntentUiLogger;
import org.eclipse.mylyn.docs.intent.client.ui.utils.IntentEditorOpener;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManager;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.repository.RepositoryConnectionException;
import org.eclipse.mylyn.docs.intent.core.document.IntentGenericElement;
import org.eclipse.mylyn.docs.intent.core.indexer.IntentIndexEntry;
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/navigator/ProjectExplorerRefresher.java b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/navigator/ProjectExplorerRefresher.java
index 722aee5..aec3126 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/navigator/ProjectExplorerRefresher.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/navigator/ProjectExplorerRefresher.java
@@ -19,11 +19,11 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.emf.ecore.EObject;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.common.logger.IIntentLogger.LogType;
import org.eclipse.mylyn.docs.intent.collab.common.logger.IntentLogger;
import org.eclipse.mylyn.docs.intent.collab.common.query.CompilationStatusQuery;
import org.eclipse.mylyn.docs.intent.collab.common.query.IndexQuery;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.handlers.RepositoryObjectHandler;
import org.eclipse.mylyn.docs.intent.collab.handlers.adapters.ReadOnlyException;
import org.eclipse.mylyn.docs.intent.collab.handlers.adapters.RepositoryAdapter;
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/navigator/RepositoryContentProvider.java b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/navigator/RepositoryContentProvider.java
index e43f880..636dec0 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/navigator/RepositoryContentProvider.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/navigator/RepositoryContentProvider.java
@@ -16,9 +16,9 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.common.location.IntentLocations;
import org.eclipse.mylyn.docs.intent.collab.common.query.IndexQuery;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.handlers.adapters.RepositoryAdapter;
import org.eclipse.mylyn.docs.intent.collab.ide.repository.WorkspaceConfig;
import org.eclipse.mylyn.docs.intent.collab.repository.Repository;
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/navigator/ShowProblemInEditorHandler.java b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/navigator/ShowProblemInEditorHandler.java
index dd8ea13..5c3b4cc 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/navigator/ShowProblemInEditorHandler.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/navigator/ShowProblemInEditorHandler.java
@@ -21,8 +21,8 @@
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.mylyn.docs.intent.client.ui.logger.IntentUiLogger;
import org.eclipse.mylyn.docs.intent.client.ui.utils.IntentEditorOpener;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.common.location.IntentLocations;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.handlers.adapters.RepositoryAdapter;
import org.eclipse.mylyn.docs.intent.collab.repository.Repository;
import org.eclipse.mylyn.docs.intent.collab.repository.RepositoryConnectionException;
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/projectmanager/IntentProjectManager.java b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/projectmanager/IntentProjectManager.java
index c833186..35c347d 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/projectmanager/IntentProjectManager.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/projectmanager/IntentProjectManager.java
@@ -24,9 +24,9 @@
import org.eclipse.mylyn.docs.intent.client.ui.ide.builder.IntentNature;
import org.eclipse.mylyn.docs.intent.client.ui.ide.generatedelementlistener.IDEGeneratedElementListener;
import org.eclipse.mylyn.docs.intent.client.ui.ide.navigator.ProjectExplorerRefresher;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.common.logger.IIntentLogger.LogType;
import org.eclipse.mylyn.docs.intent.collab.common.logger.IntentLogger;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.handlers.adapters.ReadOnlyException;
import org.eclipse.mylyn.docs.intent.collab.repository.Repository;
import org.eclipse.mylyn.docs.intent.collab.repository.RepositoryConnectionException;
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/propertytester/IsAssociatedToIntentDocumentTester.java b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/propertytester/IsAssociatedToIntentDocumentTester.java
index 9f3be2c..1b5e9d8 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/propertytester/IsAssociatedToIntentDocumentTester.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/propertytester/IsAssociatedToIntentDocumentTester.java
@@ -20,8 +20,8 @@
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.mylyn.docs.intent.client.ui.ide.builder.IntentNature;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.common.location.IntentLocations;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.handlers.adapters.RepositoryAdapter;
import org.eclipse.mylyn.docs.intent.collab.repository.Repository;
import org.eclipse.mylyn.docs.intent.collab.repository.RepositoryConnectionException;
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/repository/IntentProjectBasedRepositoryManagerContribution.java b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/repository/IntentProjectBasedRepositoryManagerContribution.java
index e22fc42..1940444 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/repository/IntentProjectBasedRepositoryManagerContribution.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/repository/IntentProjectBasedRepositoryManagerContribution.java
@@ -14,7 +14,7 @@
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManagerContribution;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.contribution.IntentRepositoryManagerContribution;
import org.eclipse.mylyn.docs.intent.collab.handlers.adapters.RepositoryStructurer;
import org.eclipse.mylyn.docs.intent.collab.repository.Repository;
import org.eclipse.mylyn.docs.intent.collab.repository.RepositoryConnectionException;
@@ -32,7 +32,7 @@
/**
* {@inheritDoc}
*
- * @see org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManagerContribution#canCreateRepository(java.lang.String)
+ * @see org.eclipse.mylyn.docs.intent.collab.common.repository.contribution.IntentRepositoryManagerContribution#canCreateRepository(java.lang.String)
*/
public boolean canCreateRepository(String identifier) {
return !identifier.contains("/");
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/wizards/NewIntentProjectWizard.java b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/wizards/NewIntentProjectWizard.java
index 9b47bbf..4f46424 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/wizards/NewIntentProjectWizard.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/wizards/NewIntentProjectWizard.java
@@ -25,8 +25,8 @@
import org.eclipse.mylyn.docs.intent.client.ui.ide.builder.ToggleNatureAction;
import org.eclipse.mylyn.docs.intent.client.ui.logger.IntentUiLogger;
import org.eclipse.mylyn.docs.intent.client.ui.utils.IntentEditorOpener;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryInitializer;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManager;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryInitializer;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.repository.Repository;
import org.eclipse.mylyn.docs.intent.collab.repository.RepositoryConnectionException;
import org.eclipse.swt.widgets.Composite;
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.ui/src/org/eclipse/mylyn/docs/intent/client/ui/editor/IntentEditorInput.java b/plugins/org.eclipse.mylyn.docs.intent.client.ui/src/org/eclipse/mylyn/docs/intent/client/ui/editor/IntentEditorInput.java
index bcefae8..8e5214c 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.ui/src/org/eclipse/mylyn/docs/intent/client/ui/editor/IntentEditorInput.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.ui/src/org/eclipse/mylyn/docs/intent/client/ui/editor/IntentEditorInput.java
@@ -20,9 +20,9 @@
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.mylyn.docs.intent.client.ui.IntentEditorActivator;
import org.eclipse.mylyn.docs.intent.client.ui.logger.IntentUiLogger;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.common.logger.IIntentLogger.LogType;
import org.eclipse.mylyn.docs.intent.collab.common.logger.IntentLogger;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.handlers.adapters.ReadOnlyException;
import org.eclipse.mylyn.docs.intent.collab.handlers.adapters.RepositoryAdapter;
import org.eclipse.mylyn.docs.intent.collab.repository.Repository;
diff --git a/plugins/org.eclipse.mylyn.docs.intent.collab.common/META-INF/MANIFEST.MF b/plugins/org.eclipse.mylyn.docs.intent.collab.common/META-INF/MANIFEST.MF
index 3abd645..cc5bee0 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.collab.common/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.mylyn.docs.intent.collab.common/META-INF/MANIFEST.MF
@@ -8,7 +8,9 @@
Export-Package: org.eclipse.mylyn.docs.intent.collab.common,
org.eclipse.mylyn.docs.intent.collab.common.location,
org.eclipse.mylyn.docs.intent.collab.common.logger,
- org.eclipse.mylyn.docs.intent.collab.common.query
+ org.eclipse.mylyn.docs.intent.collab.common.query,
+ org.eclipse.mylyn.docs.intent.collab.common.repository,
+ org.eclipse.mylyn.docs.intent.collab.common.repository.contribution
Bundle-Vendor: %providerName
Require-Bundle: org.eclipse.mylyn.docs.intent.collab,
com.google.guava;bundle-version="10.0.1",
diff --git a/plugins/org.eclipse.mylyn.docs.intent.collab.common/plugin.xml b/plugins/org.eclipse.mylyn.docs.intent.collab.common/plugin.xml
index 42ec0ec..e174e6b 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.collab.common/plugin.xml
+++ b/plugins/org.eclipse.mylyn.docs.intent.collab.common/plugin.xml
@@ -2,5 +2,6 @@
<?eclipse version="3.4"?>
<plugin>
<extension-point id="intentlogger" name="org.eclipse.mylyn.docs.intent.collab.common.intentlogger" schema="schema/intentlogger.exsd"/>
+ <extension-point id="repositorymanagercontribution" name="org.eclipse.mylyn.docs.intent.collab.common.repositorymanagercontribution" schema="schema/repositorymanagerextension.exsd"/>
</plugin>
diff --git a/plugins/org.eclipse.mylyn.docs.intent.collab.common/schema/repositorymanagerextension.exsd b/plugins/org.eclipse.mylyn.docs.intent.collab.common/schema/repositorymanagerextension.exsd
new file mode 100644
index 0000000..7fd9cfe
--- /dev/null
+++ b/plugins/org.eclipse.mylyn.docs.intent.collab.common/schema/repositorymanagerextension.exsd
@@ -0,0 +1,117 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.mylyn.docs.intent.collab.common" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.eclipse.mylyn.docs.intent.collab.common" id="repositorymanagerextension" name="org.eclipse.mylyn.docs.intent.collab.common.repositorymanagerextension"/>
+ </appinfo>
+ <documentation>
+ This extension point allows to provide custom IntentRepositoryManagerContributions
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="repositorymanagercontribution"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="repositorymanagercontribution">
+ <complexType>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.mylyn.docs.intent.collab.common.repository.contribution.IntentRepositoryManagerContribution"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="implementation"/>
+ </appinfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="copyright"/>
+ </appinfo>
+ <documentation>
+ Copyright (c) 2010, 2011 Obeo, France.
+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
+http://www.eclipse.org/legal/epl-v10.html
+
+Contributors:
+ Obeo - initial API and implementation
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/IntentRepositoryActivator.java b/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/IntentRepositoryActivator.java
index a22186f..936b7a2 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/IntentRepositoryActivator.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/IntentRepositoryActivator.java
@@ -1,4 +1,5 @@
package org.eclipse.mylyn.docs.intent.collab.common;
+
/*******************************************************************************
* Copyright (c) 2010, 2011 Obeo.
* All rights reserved. This program and the accompanying materials
@@ -11,6 +12,7 @@
*******************************************************************************/
import org.eclipse.core.runtime.Plugin;
import org.eclipse.mylyn.docs.intent.collab.common.internal.logger.IntentLoggerRegistryListener;
+import org.eclipse.mylyn.docs.intent.collab.common.internal.repository.contribution.IntentRepositoryManagerContributionRegistryListener;
import org.osgi.framework.BundleContext;
/**
@@ -22,6 +24,8 @@
private IntentLoggerRegistryListener loggerRegistryListener = new IntentLoggerRegistryListener();
+ private IntentRepositoryManagerContributionRegistryListener repositoryContributionsRegistryListener = new IntentRepositoryManagerContributionRegistryListener();
+
/**
* {@inheritDoc}
*
@@ -31,8 +35,9 @@
public void start(BundleContext context) throws Exception {
super.start(context);
- // Initializing registry listener for the logger extension point
+ // Initializing registry listener for all extension points
loggerRegistryListener.init();
+ repositoryContributionsRegistryListener.init();
}
/**
@@ -42,8 +47,9 @@
*/
@Override
public void stop(BundleContext context) throws Exception {
- // Initializing registry listener for the logger extension point
+ // Initializing registry listener for all extension points
loggerRegistryListener.dispose();
+ repositoryContributionsRegistryListener.dispose();
super.stop(context);
}
diff --git a/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/internal/IntentRepositoryManagerImpl.java b/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/internal/IntentRepositoryManagerImpl.java
index 05b6b18..9f92a86 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/internal/IntentRepositoryManagerImpl.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/internal/IntentRepositoryManagerImpl.java
@@ -11,17 +11,15 @@
*******************************************************************************/
package org.eclipse.mylyn.docs.intent.collab.common.internal;
-import com.google.common.collect.Sets;
-
-import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.CoreException;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManager;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManagerContribution;
+import org.eclipse.mylyn.docs.intent.collab.common.internal.repository.contribution.IntentRepositoryManagerContributionRegistry;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryManager;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.contribution.IntentRepositoryManagerContribution;
import org.eclipse.mylyn.docs.intent.collab.repository.Repository;
import org.eclipse.mylyn.docs.intent.collab.repository.RepositoryConnectionException;
@@ -37,9 +35,6 @@
*/
public final class IntentRepositoryManagerImpl implements IntentRepositoryManager {
- private static Collection<IntentRepositoryManagerContribution> managerContributions = Sets
- .newLinkedHashSet();
-
/**
* The list of created repositories, associated to the corresponding project.
*/
@@ -51,7 +46,7 @@
* {@inheritDoc}
*
* @throws CoreException
- * @see org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManager#getRepository(java.lang.String)
+ * @see org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryManager#getRepository(java.lang.String)
*/
public synchronized Repository getRepository(String identifier) throws RepositoryConnectionException,
CoreException {
@@ -67,8 +62,8 @@
}
// then delegating the repository creation to a registered repository manager
- for (Iterator<IntentRepositoryManagerContribution> iterator = managerContributions.iterator(); iterator
- .hasNext() && repository == null;) {
+ for (Iterator<IntentRepositoryManagerContribution> iterator = IntentRepositoryManagerContributionRegistry
+ .getRepositoryManagerContributions().iterator(); iterator.hasNext() && repository == null;) {
IntentRepositoryManagerContribution repositoryManagerContribution = iterator.next();
if (repositoryManagerContribution.canCreateRepository(normalizedIdentifier)) {
repository = repositoryManagerContribution.createRepository(normalizedIdentifier);
@@ -86,7 +81,7 @@
/**
* {@inheritDoc}
*
- * @see org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManager#isManagedProject(java.lang.String)
+ * @see org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryManager#isManagedProject(java.lang.String)
*/
public synchronized boolean isManagedProject(String identifier) {
String normalizedIdentifier = normalizeIdentifier(identifier);
@@ -96,7 +91,7 @@
/**
* {@inheritDoc}
*
- * @see org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManager#deleteRepository(java.lang.String)
+ * @see org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryManager#deleteRepository(java.lang.String)
*/
public synchronized void deleteRepository(String identifier) {
String normalizedIdentifier = normalizeIdentifier(identifier);
@@ -104,24 +99,6 @@
}
/**
- * {@inheritDoc}
- *
- * @see org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManager#addIntentRepositoryManagerContribution(org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManagerContribution)
- */
- public void addIntentRepositoryManagerContribution(IntentRepositoryManagerContribution contribution) {
- managerContributions.add(contribution);
- }
-
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManager#removeIntentRepositoryManagerContribution(org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManagerContribution)
- */
- public void removeIntentRepositoryManagerContribution(IntentRepositoryManagerContribution contribution) {
- managerContributions.remove(contribution);
- }
-
- /**
* Returns the normalized form of the given identifier (e.g. if identifier is of the form
* platform:/resource/PROJECT_NAME/..., returns PROJECT_NAME
*
diff --git a/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/internal/repository/contribution/IntentRepositoryManagerContributionDescriptor.java b/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/internal/repository/contribution/IntentRepositoryManagerContributionDescriptor.java
new file mode 100644
index 0000000..37af668
--- /dev/null
+++ b/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/internal/repository/contribution/IntentRepositoryManagerContributionDescriptor.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2011 Obeo.
+ * 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylyn.docs.intent.collab.common.internal.repository.contribution;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.mylyn.docs.intent.collab.common.logger.IIntentLogger.LogType;
+import org.eclipse.mylyn.docs.intent.collab.common.logger.IntentLogger;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.contribution.IntentRepositoryManagerContribution;
+
+/**
+ * Describes an extension as contibuted to the
+ * {@link IntentRepositoryManagerContributionRegistryListener#INTENT_REPOSITORY_MANAGER_CONTRIBUTION_EXTENSION_POINT}
+ * extension point.
+ *
+ * @author <a href="mailto:alex.lagarde@obeo.fr">Alex Lagarde</a>
+ */
+public class IntentRepositoryManagerContributionDescriptor {
+
+ /**
+ * Name of the attribute corresponding to the contributed class's path.
+ */
+ public static final String REPOSITORY_MANAGER_CONTRIBUTION_CLASS_NAME = "class";
+
+ /**
+ * Configuration element of this descriptor .
+ */
+ private final IConfigurationElement element;
+
+ /**
+ * The path of the contributed class.
+ */
+ private String extensionClassName;
+
+ /**
+ * The {@link IntentRepositoryManagerContribution} described by this descriptor.
+ */
+ private IntentRepositoryManagerContribution extension;
+
+ /**
+ * Instantiates a descriptor with all information.
+ *
+ * @param configuration
+ * Configuration element from which to create this descriptor.
+ */
+ public IntentRepositoryManagerContributionDescriptor(IConfigurationElement configuration) {
+ element = configuration;
+ extensionClassName = configuration.getAttribute(REPOSITORY_MANAGER_CONTRIBUTION_CLASS_NAME);
+ }
+
+ /**
+ * Creates an instance of this descriptor's {@link IntentRepositoryManagerContribution} .
+ *
+ * @return A new instance of this descriptor's {@link IntentRepositoryManagerContribution}.
+ */
+ public IntentRepositoryManagerContribution createRepositoryManagerContribution() {
+ try {
+ extension = (IntentRepositoryManagerContribution)element
+ .createExecutableExtension(REPOSITORY_MANAGER_CONTRIBUTION_CLASS_NAME);
+ } catch (CoreException e) {
+ IntentLogger.getInstance().log(LogType.ERROR,
+ "Could not create repository manager contribution " + extensionClassName, e);
+ }
+ return extension;
+ }
+
+ /**
+ * Returns the fully qualified name of the contributed class.
+ *
+ * @return the fully qualified name of the contributed class
+ */
+ public String getExtensionClassName() {
+ return extensionClassName;
+ }
+}
diff --git a/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/internal/repository/contribution/IntentRepositoryManagerContributionRegistry.java b/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/internal/repository/contribution/IntentRepositoryManagerContributionRegistry.java
new file mode 100644
index 0000000..80f84c3
--- /dev/null
+++ b/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/internal/repository/contribution/IntentRepositoryManagerContributionRegistry.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2011 Obeo.
+ * 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylyn.docs.intent.collab.common.internal.repository.contribution;
+
+import com.google.common.collect.Maps;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.eclipse.mylyn.docs.intent.collab.common.repository.contribution.IntentRepositoryManagerContribution;
+
+/**
+ * @author <a href="mailto:alex.lagarde@obeo.fr">Alex Lagarde</a>
+ */
+public class IntentRepositoryManagerContributionRegistry {
+
+ /**
+ * All the registered IntentRepositoryManagerContributions.
+ */
+ private static final Map<IntentRepositoryManagerContributionDescriptor, IntentRepositoryManagerContribution> declaredRepositoryManagerContributions = Maps
+ .newLinkedHashMap();
+
+ /**
+ * Utility classes don't need a default constructor.
+ */
+ private IntentRepositoryManagerContributionRegistry() {
+
+ }
+
+ /**
+ * Returns all declared Repository Manager Contributions (instanciates it if needed).
+ */
+ public static Collection<IntentRepositoryManagerContribution> getRepositoryManagerContributions() {
+ for (Entry<IntentRepositoryManagerContributionDescriptor, IntentRepositoryManagerContribution> descriptorToContribution : declaredRepositoryManagerContributions
+ .entrySet()) {
+ if (descriptorToContribution.getValue() == null) {
+ descriptorToContribution.setValue(descriptorToContribution.getKey()
+ .createRepositoryManagerContribution());
+ }
+ }
+ return declaredRepositoryManagerContributions.values();
+ }
+
+ /**
+ * Registers the given repository manager contribution descriptor.
+ *
+ * @param IntentRepositoryManagerContributionDescriptor
+ * the repository manager contribution descriptor to registor
+ */
+ public static void addRepositoryManagerContribution(
+ IntentRepositoryManagerContributionDescriptor IntentRepositoryManagerContributionDescriptor) {
+ declaredRepositoryManagerContributions.put(IntentRepositoryManagerContributionDescriptor, null);
+ }
+
+ /**
+ * Removes a phantom from the registry.
+ *
+ * @param extensionClassName
+ * Qualified class name of the sync element which corresponding phantom is to be removed from
+ * the registry.
+ */
+ public static void removeExtension(String extensionClassName) {
+ for (IntentRepositoryManagerContributionDescriptor extension : declaredRepositoryManagerContributions
+ .keySet()) {
+ if (extension.getExtensionClassName().equals(extensionClassName)) {
+ declaredRepositoryManagerContributions.remove(extension);
+ }
+ }
+ }
+
+ /**
+ * Clears all registered IntentRepositoryManagerContributions.
+ */
+ public static void clearContributedRepositoryManagerContributions() {
+ declaredRepositoryManagerContributions.clear();
+
+ }
+}
diff --git a/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/internal/repository/contribution/IntentRepositoryManagerContributionRegistryListener.java b/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/internal/repository/contribution/IntentRepositoryManagerContributionRegistryListener.java
new file mode 100644
index 0000000..ddd9d62
--- /dev/null
+++ b/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/internal/repository/contribution/IntentRepositoryManagerContributionRegistryListener.java
@@ -0,0 +1,151 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2011 Obeo.
+ * 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylyn.docs.intent.collab.common.internal.repository.contribution;
+
+import com.google.common.collect.Sets;
+
+import java.util.Set;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionDelta;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.IRegistryChangeEvent;
+import org.eclipse.core.runtime.IRegistryChangeListener;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.mylyn.docs.intent.collab.common.logger.IIntentLogger.LogType;
+import org.eclipse.mylyn.docs.intent.collab.common.logger.IntentLogger;
+
+/**
+ * This listener allows to be aware of contribution changes against the
+ * {@link IntentRepositoryManagerRegistryListener#INTENT_REPOSITORY_MANAGER_CONTRIBUTION_EXTENSION_POINT}
+ * extension point.
+ *
+ * @author <a href="mailto:alex.lagarde@obeo.fr">Alex Lagarde</a>
+ */
+public class IntentRepositoryManagerContributionRegistryListener implements IRegistryChangeListener {
+
+ /** Name of the extension point to parse for extensions. */
+ public static final String INTENT_REPOSITORY_MANAGER_CONTRIBUTION_EXTENSION_POINT = "org.eclipse.mylyn.docs.intent.collab.common.repositorymanagercontribution"; //$NON-NLS-1$
+
+ /** Name of the extension point's tag. */
+ private static final String REPOSITORY_MANAGER_CONTRIBUTION_TAG = "repositorymanagercontribution"; //$NON-NLS-1$
+
+ /**
+ * Register this listener and parse initial contributions.
+ */
+ public void init() {
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ registry.addRegistryChangeListener(this, INTENT_REPOSITORY_MANAGER_CONTRIBUTION_EXTENSION_POINT);
+ parseInitialContributions();
+ }
+
+ /**
+ * Parses a single extension contribution.
+ *
+ * @param extension
+ * Parses the given extension and adds its contribution to the registry.
+ */
+ private void parseExtension(IExtension extension) {
+ final IConfigurationElement[] configElements = extension.getConfigurationElements();
+ for (IConfigurationElement elem : configElements) {
+ if (REPOSITORY_MANAGER_CONTRIBUTION_TAG.equals(elem.getName())) {
+ try {
+ IntentRepositoryManagerContributionRegistry
+ .addRepositoryManagerContribution(new IntentRepositoryManagerContributionDescriptor(
+ elem));
+ } catch (IllegalArgumentException e) {
+ IntentLogger.getInstance().log(LogType.ERROR,
+ "Could not create repository manager contribution " + elem.getValue(), e);
+ }
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.core.runtime.IRegistryEventListener#added(org.eclipse.core.runtime.IExtensionPoint[])
+ */
+ public void added(IExtensionPoint[] extensionPoints) {
+ for (IExtensionPoint extensionPoint : extensionPoints) {
+ for (IExtension extension : extensionPoint.getExtensions()) {
+ parseExtension(extension);
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.core.runtime.IRegistryChangeListener#registryChanged(org.eclipse.core.runtime.IRegistryChangeEvent)
+ */
+ public void registryChanged(IRegistryChangeEvent event) {
+ Set<IExtension> addedExtensions = Sets.newLinkedHashSet();
+ for (IExtensionDelta extensionDelta : event.getExtensionDeltas()) {
+ addedExtensions.add(extensionDelta.getExtension());
+ }
+ added(addedExtensions.toArray(new IExtension[addedExtensions.size()]));
+ }
+
+ /**
+ * Behavior when the given extensions are added.
+ *
+ * @param extensions
+ * the added extensions
+ */
+ public void added(IExtension[] extensions) {
+ for (IExtension extension : extensions) {
+ parseExtension(extension);
+ }
+ }
+
+ /**
+ * Though this listener reacts to the extension point changes, there could have been contributions before
+ * it's been registered. This will parse these initial contributions.
+ */
+ public void parseInitialContributions() {
+ final IExtensionRegistry registry = Platform.getExtensionRegistry();
+
+ for (IExtension extension : registry.getExtensionPoint(
+ INTENT_REPOSITORY_MANAGER_CONTRIBUTION_EXTENSION_POINT).getExtensions()) {
+ parseExtension(extension);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.core.runtime.IRegistryEventListener#removed(org.eclipse.core.runtime.IExtension[])
+ */
+ public void removed(IExtension[] extensions) {
+ for (IExtension extension : extensions) {
+ final IConfigurationElement[] configElements = extension.getConfigurationElements();
+ for (IConfigurationElement elem : configElements) {
+ if (REPOSITORY_MANAGER_CONTRIBUTION_TAG.equals(elem.getName())) {
+ final String extensionClassName = elem
+ .getAttribute(IntentRepositoryManagerContributionDescriptor.REPOSITORY_MANAGER_CONTRIBUTION_CLASS_NAME);
+ IntentRepositoryManagerContributionRegistry.removeExtension(extensionClassName);
+ }
+ }
+ }
+ }
+
+ /**
+ * Remove this listener and flush the contributions registry.
+ */
+ public void dispose() {
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ registry.removeRegistryChangeListener(this);
+ IntentRepositoryManagerContributionRegistry.clearContributedRepositoryManagerContributions();
+ }
+}
diff --git a/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/IntentRepositoryInitializer.java b/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/repository/IntentRepositoryInitializer.java
similarity index 98%
rename from plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/IntentRepositoryInitializer.java
rename to plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/repository/IntentRepositoryInitializer.java
index f158592..160ffec 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/IntentRepositoryInitializer.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/repository/IntentRepositoryInitializer.java
@@ -8,7 +8,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
-package org.eclipse.mylyn.docs.intent.collab.common;
+package org.eclipse.mylyn.docs.intent.collab.common.repository;
import java.util.ArrayList;
import java.util.List;
diff --git a/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/IntentRepositoryManager.java b/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/repository/IntentRepositoryManager.java
similarity index 76%
rename from plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/IntentRepositoryManager.java
rename to plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/repository/IntentRepositoryManager.java
index 20654fc..e49379a 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/IntentRepositoryManager.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/repository/IntentRepositoryManager.java
@@ -8,7 +8,7 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
-package org.eclipse.mylyn.docs.intent.collab.common;
+package org.eclipse.mylyn.docs.intent.collab.common.repository;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.mylyn.docs.intent.collab.common.internal.IntentRepositoryManagerImpl;
@@ -57,21 +57,4 @@
*/
void deleteRepository(String identifier);
- /**
- * Adds the given {@link IntentRepositoryManagerContribution} to this {@link IntentRepositoryManager},
- * that will use it to delegate Repositories creations.
- *
- * @param contribution
- * the contributed {@link IntentRepositoryManagerContribution}
- */
- void addIntentRepositoryManagerContribution(IntentRepositoryManagerContribution contribution);
-
- /**
- * Removes the given {@link IntentRepositoryManagerContribution}.
- *
- * @param contribution
- * the contributed {@link IntentRepositoryManagerContribution} to delete
- */
- void removeIntentRepositoryManagerContribution(IntentRepositoryManagerContribution contribution);
-
}
diff --git a/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/IntentRepositoryManagerContribution.java b/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/repository/contribution/IntentRepositoryManagerContribution.java
similarity index 91%
rename from plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/IntentRepositoryManagerContribution.java
rename to plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/repository/contribution/IntentRepositoryManagerContribution.java
index 72efb66..0e3e0a4 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/IntentRepositoryManagerContribution.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.collab.common/src/org/eclipse/mylyn/docs/intent/collab/common/repository/contribution/IntentRepositoryManagerContribution.java
@@ -8,8 +8,9 @@
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
-package org.eclipse.mylyn.docs.intent.collab.common;
+package org.eclipse.mylyn.docs.intent.collab.common.repository.contribution;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.repository.Repository;
import org.eclipse.mylyn.docs.intent.collab.repository.RepositoryConnectionException;
diff --git a/plugins/org.eclipse.mylyn.docs.intent.exporter.ui/src/org/eclipse/mylyn/docs/intent/exporter/ui/popup/actions/ExportIntentDocumentationAction.java b/plugins/org.eclipse.mylyn.docs.intent.exporter.ui/src/org/eclipse/mylyn/docs/intent/exporter/ui/popup/actions/ExportIntentDocumentationAction.java
index 239dfd2..4af30ee 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.exporter.ui/src/org/eclipse/mylyn/docs/intent/exporter/ui/popup/actions/ExportIntentDocumentationAction.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.exporter.ui/src/org/eclipse/mylyn/docs/intent/exporter/ui/popup/actions/ExportIntentDocumentationAction.java
@@ -35,8 +35,8 @@
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.window.Window;
import org.eclipse.mylyn.docs.intent.client.ui.logger.IntentUiLogger;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.common.query.IntentDocumentQuery;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.handlers.adapters.ReadOnlyException;
import org.eclipse.mylyn.docs.intent.collab.handlers.adapters.RepositoryAdapter;
import org.eclipse.mylyn.docs.intent.collab.repository.Repository;
diff --git a/tests/org.eclipse.mylyn.docs.intent.client.ui.test/src/org/eclipse/mylyn/docs/intent/client/ui/test/util/AbstractIntentUITest.java b/tests/org.eclipse.mylyn.docs.intent.client.ui.test/src/org/eclipse/mylyn/docs/intent/client/ui/test/util/AbstractIntentUITest.java
index 97c7e1b..216e7e1 100644
--- a/tests/org.eclipse.mylyn.docs.intent.client.ui.test/src/org/eclipse/mylyn/docs/intent/client/ui/test/util/AbstractIntentUITest.java
+++ b/tests/org.eclipse.mylyn.docs.intent.client.ui.test/src/org/eclipse/mylyn/docs/intent/client/ui/test/util/AbstractIntentUITest.java
@@ -43,9 +43,9 @@
import org.eclipse.mylyn.docs.intent.client.ui.ide.builder.ToggleNatureAction;
import org.eclipse.mylyn.docs.intent.client.ui.preferences.IntentPreferenceConstants;
import org.eclipse.mylyn.docs.intent.client.ui.utils.IntentEditorOpener;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryInitializer;
-import org.eclipse.mylyn.docs.intent.collab.common.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.common.query.IntentDocumentQuery;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryInitializer;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryManager;
import org.eclipse.mylyn.docs.intent.collab.handlers.adapters.RepositoryAdapter;
import org.eclipse.mylyn.docs.intent.collab.repository.Repository;
import org.eclipse.mylyn.docs.intent.collab.repository.RepositoryConnectionException;