improved clients api: common register/unregister strategy
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.compiler/src/org/eclipse/mylyn/docs/intent/client/compiler/launcher/CompilerCreator.java b/plugins/org.eclipse.mylyn.docs.intent.client.compiler/src/org/eclipse/mylyn/docs/intent/client/compiler/launcher/CompilerCreator.java
index 04b59c9..cd1ea8b 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.compiler/src/org/eclipse/mylyn/docs/intent/client/compiler/launcher/CompilerCreator.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.compiler/src/org/eclipse/mylyn/docs/intent/client/compiler/launcher/CompilerCreator.java
@@ -88,8 +88,7 @@
handler.addNotificator(notificator);
// Step 3: create the compiler
- CompilerRepositoryClient compilerClient = new CompilerRepositoryClient();
- compilerClient.setRepository(repository);
+ CompilerRepositoryClient compilerClient = new CompilerRepositoryClient(repository);
compilerClient.addRepositoryObjectHandler(handler);
return compilerClient;
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.compiler/src/org/eclipse/mylyn/docs/intent/client/compiler/repositoryconnection/CompilerRepositoryClient.java b/plugins/org.eclipse.mylyn.docs.intent.client.compiler/src/org/eclipse/mylyn/docs/intent/client/compiler/repositoryconnection/CompilerRepositoryClient.java
index 0903a4c..2dbd00b 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.compiler/src/org/eclipse/mylyn/docs/intent/client/compiler/repositoryconnection/CompilerRepositoryClient.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.compiler/src/org/eclipse/mylyn/docs/intent/client/compiler/repositoryconnection/CompilerRepositoryClient.java
@@ -27,26 +27,14 @@
public class CompilerRepositoryClient extends AbstractRepositoryClient {
/**
- * The repository to use for access to package registry and several informations.
- */
- private Repository repository;
-
- /**
* Constructor.
- */
- public CompilerRepositoryClient() {
- IntentLogger.getInstance().log(LogType.LIFECYCLE, "[Compiler] Ready");
- }
-
- /**
- * Sets the repository to use for saving and closing getConnexion.
*
* @param repository
- * the repository to use for saving and closing getConnexion
+ * the repository
*/
- public void setRepository(Repository repository) {
- this.repository = repository;
- this.repository.register(this);
+ public CompilerRepositoryClient(Repository repository) {
+ super(repository);
+ IntentLogger.getInstance().log(LogType.LIFECYCLE, "[Compiler] Ready");
}
/**
@@ -59,14 +47,4 @@
return new CompilationJob(this.repository, this.repositoryObjectHandler);
}
- /**
- * {@inheritDoc}
- *
- * @see org.eclipse.mylyn.docs.intent.collab.handlers.impl.AbstractRepositoryClient#dispose()
- */
- @Override
- public void dispose() {
- this.repository.unregister(this);
- super.dispose();
- }
}
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.indexer/src/org/eclipse/mylyn/docs/intent/client/indexer/IndexerRepositoryClient.java b/plugins/org.eclipse.mylyn.docs.intent.client.indexer/src/org/eclipse/mylyn/docs/intent/client/indexer/IndexerRepositoryClient.java
index 7b35407..a7b5982 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.indexer/src/org/eclipse/mylyn/docs/intent/client/indexer/IndexerRepositoryClient.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.indexer/src/org/eclipse/mylyn/docs/intent/client/indexer/IndexerRepositoryClient.java
@@ -10,8 +10,6 @@
*******************************************************************************/
package org.eclipse.mylyn.docs.intent.client.indexer;
-import com.google.common.collect.Lists;
-
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
@@ -28,9 +26,12 @@
import org.eclipse.mylyn.docs.intent.collab.handlers.adapters.SaveException;
import org.eclipse.mylyn.docs.intent.collab.handlers.impl.AbstractRepositoryClient;
import org.eclipse.mylyn.docs.intent.collab.handlers.notification.RepositoryChangeNotification;
+import org.eclipse.mylyn.docs.intent.collab.repository.Repository;
import org.eclipse.mylyn.docs.intent.core.document.IntentDocument;
import org.eclipse.mylyn.docs.intent.core.indexer.IntentIndex;
+import com.google.common.collect.Lists;
+
/**
* When notified about modifications on the listened elements, update the index.
*
@@ -45,9 +46,13 @@
private TocMaker indexComputor;
/**
- * Indexer constructor.
+ * Constructor.
+ *
+ * @param repository
+ * the repository
*/
- public IndexerRepositoryClient() {
+ public IndexerRepositoryClient(Repository repository) {
+ super(repository);
indexComputor = new TocMaker();
IntentLogger.getInstance().log(LogType.LIFECYCLE, "[Indexer] Ready");
}
@@ -104,4 +109,5 @@
job.setSystem(true);
return job;
}
+
}
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.indexer/src/org/eclipse/mylyn/docs/intent/client/indexer/launcher/IndexerCreator.java b/plugins/org.eclipse.mylyn.docs.intent.client.indexer/src/org/eclipse/mylyn/docs/intent/client/indexer/launcher/IndexerCreator.java
index 18469b8..3d6a9e1 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.indexer/src/org/eclipse/mylyn/docs/intent/client/indexer/launcher/IndexerCreator.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.indexer/src/org/eclipse/mylyn/docs/intent/client/indexer/launcher/IndexerCreator.java
@@ -68,7 +68,7 @@
// Step 4 : launching the indexer
- IndexerRepositoryClient indexer = new IndexerRepositoryClient();
+ IndexerRepositoryClient indexer = new IndexerRepositoryClient(repository);
indexer.addRepositoryObjectHandler(handler);
return indexer;
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.linkresolver/src/org/eclipse/mylyn/docs/intent/client/linkresolver/repository/LinkResolverClient.java b/plugins/org.eclipse.mylyn.docs.intent.client.linkresolver/src/org/eclipse/mylyn/docs/intent/client/linkresolver/repository/LinkResolverClient.java
index 12638a9..d3b3017 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.linkresolver/src/org/eclipse/mylyn/docs/intent/client/linkresolver/repository/LinkResolverClient.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.linkresolver/src/org/eclipse/mylyn/docs/intent/client/linkresolver/repository/LinkResolverClient.java
@@ -13,6 +13,7 @@
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.mylyn.docs.intent.collab.handlers.impl.AbstractRepositoryClient;
import org.eclipse.mylyn.docs.intent.collab.handlers.notification.RepositoryChangeNotification;
+import org.eclipse.mylyn.docs.intent.collab.repository.Repository;
/**
* Link resolver client. Launch a resolve operation each time a modification on links is detected.
@@ -23,6 +24,16 @@
public class LinkResolverClient extends AbstractRepositoryClient {
/**
+ * Constructor.
+ *
+ * @param repository
+ * the repository
+ */
+ public LinkResolverClient(Repository repository) {
+ super(repository);
+ }
+
+ /**
* {@inheritDoc}
*
* @see org.eclipse.mylyn.docs.intent.collab.handlers.impl.AbstractRepositoryClient#createNotificationJob(org.eclipse.mylyn.docs.intent.collab.handlers.notification.RepositoryChangeNotification)
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.linkresolver/src/org/eclipse/mylyn/docs/intent/client/linkresolver/repository/LinkResolverCreator.java b/plugins/org.eclipse.mylyn.docs.intent.client.linkresolver/src/org/eclipse/mylyn/docs/intent/client/linkresolver/repository/LinkResolverCreator.java
index 7ca11e3..2ce20a5 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.linkresolver/src/org/eclipse/mylyn/docs/intent/client/linkresolver/repository/LinkResolverCreator.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.linkresolver/src/org/eclipse/mylyn/docs/intent/client/linkresolver/repository/LinkResolverCreator.java
@@ -73,7 +73,7 @@
handler.addNotificator(typeNotificator);
// Step 3: create the link resolver
- LinkResolverClient linkResolver = new LinkResolverClient();
+ LinkResolverClient linkResolver = new LinkResolverClient(repository);
linkResolver.addRepositoryObjectHandler(handler);
return linkResolver;
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.synchronizer/src/org/eclipse/mylyn/docs/intent/client/synchronizer/SynchronizerRepositoryClient.java b/plugins/org.eclipse.mylyn.docs.intent.client.synchronizer/src/org/eclipse/mylyn/docs/intent/client/synchronizer/SynchronizerRepositoryClient.java
index 4e532f9..4aa62c3 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.synchronizer/src/org/eclipse/mylyn/docs/intent/client/synchronizer/SynchronizerRepositoryClient.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.synchronizer/src/org/eclipse/mylyn/docs/intent/client/synchronizer/SynchronizerRepositoryClient.java
@@ -10,9 +10,6 @@
*******************************************************************************/
package org.eclipse.mylyn.docs.intent.client.synchronizer;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Sets;
-
import java.util.Collection;
import java.util.Iterator;
@@ -23,11 +20,15 @@
import org.eclipse.mylyn.docs.intent.collab.common.logger.IntentLogger;
import org.eclipse.mylyn.docs.intent.collab.handlers.impl.AbstractRepositoryClient;
import org.eclipse.mylyn.docs.intent.collab.handlers.notification.RepositoryChangeNotification;
+import org.eclipse.mylyn.docs.intent.collab.repository.Repository;
import org.eclipse.mylyn.docs.intent.core.compiler.CompilationStatus;
import org.eclipse.mylyn.docs.intent.core.compiler.CompilationStatusManager;
import org.eclipse.mylyn.docs.intent.core.compiler.SynchronizerCompilationStatus;
import org.eclipse.mylyn.docs.intent.core.compiler.TraceabilityIndex;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Sets;
+
/**
* In charge of communication between the repository and the synchronizer ; launch a synchronization operation
* each time a modification on the compiler's generated elements index is detected.
@@ -59,9 +60,12 @@
* the listened {@link TraceabilityIndex}
* @param statusManager
* the {@link CompilationStatusManager} to use for adding statuses
+ * @param repository
+ * the repository to listen
*/
public SynchronizerRepositoryClient(TraceabilityIndex traceabilityIndex,
- CompilationStatusManager statusManager) {
+ CompilationStatusManager statusManager, Repository repository) {
+ super(repository);
IntentLogger.getInstance().log(LogType.LIFECYCLE, "[Synchronizer] Ready");
this.synchronizer = new IntentSynchronizer(this);
this.traceabilityIndex = traceabilityIndex;
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.synchronizer/src/org/eclipse/mylyn/docs/intent/client/synchronizer/launcher/SynchronizerCreator.java b/plugins/org.eclipse.mylyn.docs.intent.client.synchronizer/src/org/eclipse/mylyn/docs/intent/client/synchronizer/launcher/SynchronizerCreator.java
index dc12851..17d831c 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.synchronizer/src/org/eclipse/mylyn/docs/intent/client/synchronizer/launcher/SynchronizerCreator.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.synchronizer/src/org/eclipse/mylyn/docs/intent/client/synchronizer/launcher/SynchronizerCreator.java
@@ -87,7 +87,7 @@
// Step 3 : create the synchronizer
SynchronizerRepositoryClient synchronizerClient = new SynchronizerRepositoryClient(traceabilityIndex,
- statusManager);
+ statusManager, repository);
synchronizerClient.addRepositoryObjectHandler(handler);
synchronizerClient.setGeneratedElementListener(generatedElementListener);
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 9069a15..af4b5e1 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
@@ -57,8 +57,11 @@
*
* @param project
* the project to refresh
+ * @param repository
+ * the repository to listen
*/
- public ProjectExplorerRefresher(IProject project) {
+ public ProjectExplorerRefresher(IProject project, Repository repository) {
+ super(repository);
this.project = project;
updateProblemView();
}
@@ -99,7 +102,7 @@
handler.addNotificator(listenedElementsNotificator);
// Step 4 : create the ProjectExplorer refresher
- ProjectExplorerRefresher refresher = new ProjectExplorerRefresher(project);
+ ProjectExplorerRefresher refresher = new ProjectExplorerRefresher(project, repository);
refresher.addRepositoryObjectHandler(handler);
return refresher;
}
diff --git a/plugins/org.eclipse.mylyn.docs.intent.collab/src/org/eclipse/mylyn/docs/intent/collab/handlers/impl/AbstractRepositoryClient.java b/plugins/org.eclipse.mylyn.docs.intent.collab/src/org/eclipse/mylyn/docs/intent/collab/handlers/impl/AbstractRepositoryClient.java
index b656068..650ba5f 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.collab/src/org/eclipse/mylyn/docs/intent/collab/handlers/impl/AbstractRepositoryClient.java
+++ b/plugins/org.eclipse.mylyn.docs.intent.collab/src/org/eclipse/mylyn/docs/intent/collab/handlers/impl/AbstractRepositoryClient.java
@@ -14,6 +14,7 @@
import org.eclipse.mylyn.docs.intent.collab.handlers.RepositoryClient;
import org.eclipse.mylyn.docs.intent.collab.handlers.RepositoryObjectHandler;
import org.eclipse.mylyn.docs.intent.collab.handlers.notification.RepositoryChangeNotification;
+import org.eclipse.mylyn.docs.intent.collab.repository.Repository;
/**
* An abstract Repository Client which manages notifications.
@@ -33,11 +34,27 @@
protected RepositoryObjectHandler repositoryObjectHandler;
/**
+ * The repository to use for access to package registry and several informations.
+ */
+ protected Repository repository;
+
+ /**
* The {@link Job} that handles notifications.
*/
private Job notificationJob;
/**
+ * Constructor.
+ *
+ * @param repository
+ * the repository
+ */
+ public AbstractRepositoryClient(Repository repository) {
+ this.repository = repository;
+ this.repository.register(this);
+ }
+
+ /**
* {@inheritDoc}
*
* @see org.eclipse.mylyn.docs.intent.collab.handlers.RepositoryClient#addRepositoryObjectHandler(org.eclipse.mylyn.docs.intent.collab.handlers.RepositoryObjectHandler)
@@ -99,6 +116,7 @@
* @see org.eclipse.mylyn.docs.intent.collab.handlers.RepositoryClient#dispose()
*/
public void dispose() {
+ this.repository.unregister(this);
if (notificationJob != null) {
notificationJob.cancel();
notificationJob = null;