Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2012-10-06 17:00:50 +0000
committerEike Stepper2012-10-06 17:00:50 +0000
commit1fdc592c46f01f5059cef4b5ee536c2fe7b9e395 (patch)
tree3e055dd6eef5359e8ce92488e4b9486756205ccf
parent37a154024bfd5ce49557e18675cbd79cb44acd99 (diff)
downloadcdo-1fdc592c46f01f5059cef4b5ee536c2fe7b9e395.tar.gz
cdo-1fdc592c46f01f5059cef4b5ee536c2fe7b9e395.tar.xz
cdo-1fdc592c46f01f5059cef4b5ee536c2fe7b9e395.zip
[391295] Call CDOCommitInfoHandlers from CDOCommitInfoManager
https://bugs.eclipse.org/bugs/show_bug.cgi?id=391295
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/commit/CDOCommitInfoManager.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/commit/CDOCommitInfoProvider.java26
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/CDOCommitInfoManagerImpl.java52
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/commit/InternalCDOCommitInfoManager.java5
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/DelegatingRepository.java3
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java53
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepository.java7
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/CommitInfoTest.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/SessionTest.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/TransactionTest.java10
-rw-r--r--plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/RepositoryConfig.java6
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java1
12 files changed, 123 insertions, 50 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/commit/CDOCommitInfoManager.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/commit/CDOCommitInfoManager.java
index 9ca8039528..b0fda11af9 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/commit/CDOCommitInfoManager.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/commit/CDOCommitInfoManager.java
@@ -22,7 +22,7 @@ import org.eclipse.emf.cdo.common.branch.CDOBranch;
* @apiviz.landmark
* @apiviz.uses {@link CDOCommitInfo} - - manages
*/
-public interface CDOCommitInfoManager
+public interface CDOCommitInfoManager extends CDOCommitInfoProvider
{
/**
* @since 4.2
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/commit/CDOCommitInfoProvider.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/commit/CDOCommitInfoProvider.java
new file mode 100644
index 0000000000..9d97234555
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/commit/CDOCommitInfoProvider.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.emf.cdo.common.commit;
+
+/**
+ * Calls registered {@link CDOCommitInfoHandler commit info handlers}.
+ *
+ * @author Eike Stepper
+ * @since 4.2
+ */
+public interface CDOCommitInfoProvider
+{
+ public CDOCommitInfoHandler[] getCommitInfoHandlers();
+
+ public void addCommitInfoHandler(CDOCommitInfoHandler handler);
+
+ public void removeCommitInfoHandler(CDOCommitInfoHandler handler);
+}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/CDOCommitInfoManagerImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/CDOCommitInfoManagerImpl.java
index bce1515e68..0983bc32ed 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/CDOCommitInfoManagerImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/commit/CDOCommitInfoManagerImpl.java
@@ -16,11 +16,14 @@ import org.eclipse.emf.cdo.common.commit.CDOCommitData;
import org.eclipse.emf.cdo.common.commit.CDOCommitHistory;
import org.eclipse.emf.cdo.common.commit.CDOCommitInfo;
import org.eclipse.emf.cdo.common.commit.CDOCommitInfoHandler;
+import org.eclipse.emf.cdo.internal.common.bundle.OM;
import org.eclipse.emf.cdo.spi.common.commit.CDOCommitInfoUtil;
import org.eclipse.emf.cdo.spi.common.commit.InternalCDOCommitInfoManager;
import org.eclipse.net4j.util.lifecycle.Lifecycle;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
import java.util.WeakHashMap;
@@ -31,6 +34,8 @@ public class CDOCommitInfoManagerImpl extends Lifecycle implements InternalCDOCo
{
private CommitInfoLoader commitInfoLoader;
+ private List<CDOCommitInfoHandler> commitInfoHandlers = new ArrayList<CDOCommitInfoHandler>();
+
private Map<CDOCommitHistory, Boolean> histories = new WeakHashMap<CDOCommitHistory, Boolean>();
public CDOCommitInfoManagerImpl()
@@ -48,6 +53,51 @@ public class CDOCommitInfoManagerImpl extends Lifecycle implements InternalCDOCo
this.commitInfoLoader = commitInfoLoader;
}
+ public CDOCommitInfoHandler[] getCommitInfoHandlers()
+ {
+ synchronized (commitInfoHandlers)
+ {
+ return commitInfoHandlers.toArray(new CDOCommitInfoHandler[commitInfoHandlers.size()]);
+ }
+ }
+
+ /**
+ * @since 4.0
+ */
+ public void addCommitInfoHandler(CDOCommitInfoHandler handler)
+ {
+ synchronized (commitInfoHandlers)
+ {
+ commitInfoHandlers.add(handler);
+ }
+ }
+
+ /**
+ * @since 4.0
+ */
+ public void removeCommitInfoHandler(CDOCommitInfoHandler handler)
+ {
+ synchronized (commitInfoHandlers)
+ {
+ commitInfoHandlers.remove(handler);
+ }
+ }
+
+ public void notifyCommitInfoHandlers(CDOCommitInfo commitInfo)
+ {
+ for (CDOCommitInfoHandler handler : getCommitInfoHandlers())
+ {
+ try
+ {
+ handler.handleCommitInfo(commitInfo);
+ }
+ catch (Exception ex)
+ {
+ OM.LOG.error(ex);
+ }
+ }
+ }
+
public CDOCommitInfo createCommitInfo(CDOBranch branch, long timeStamp, long previousTimeStamp, String userID,
String comment, CDOCommitData commitData)
{
@@ -68,12 +118,14 @@ public class CDOCommitInfoManagerImpl extends Lifecycle implements InternalCDOCo
{
if (history.getBranch() == branch)
{
+ history.activate();
return history;
}
}
CDOCommitHistory history = new CDOCommitHistory(this, branch);
histories.put(history, Boolean.TRUE);
+ history.activate();
return history;
}
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/commit/InternalCDOCommitInfoManager.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/commit/InternalCDOCommitInfoManager.java
index 0e2d1ab8ae..5d33eeb9d6 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/commit/InternalCDOCommitInfoManager.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/commit/InternalCDOCommitInfoManager.java
@@ -33,6 +33,11 @@ public interface InternalCDOCommitInfoManager extends CDOCommitInfoManager, ILif
public void setCommitInfoLoader(CommitInfoLoader commitInfoLoader);
/**
+ * @since 4.2
+ */
+ public void notifyCommitInfoHandlers(CDOCommitInfo commitInfo);
+
+ /**
* @since 4.0
*/
public CDOCommitInfo createCommitInfo(CDOBranch branch, long timeStamp, long previousTimeStamp, String userID,
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/DelegatingRepository.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/DelegatingRepository.java
index 5eca7e55f3..6fa2412769 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/DelegatingRepository.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/DelegatingRepository.java
@@ -391,16 +391,19 @@ public abstract class DelegatingRepository implements InternalRepository
return getDelegate().getPackageRegistryCommitLock();
}
+ @Deprecated
public CDOCommitInfoHandler[] getCommitInfoHandlers()
{
return getDelegate().getCommitInfoHandlers();
}
+ @Deprecated
public void addCommitInfoHandler(CDOCommitInfoHandler handler)
{
getDelegate().addCommitInfoHandler(handler);
}
+ @Deprecated
public void removeCommitInfoHandler(CDOCommitInfoHandler handler)
{
getDelegate().removeCommitInfoHandler(handler);
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java
index 81ae2e0b40..52bbe71196 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/Repository.java
@@ -188,8 +188,6 @@ public class Repository extends Container<Object> implements InternalRepository
private List<WriteAccessHandler> writeAccessHandlers = new ArrayList<WriteAccessHandler>();
- private List<CDOCommitInfoHandler> commitInfoHandlers = new ArrayList<CDOCommitInfoHandler>();
-
private EPackage[] initialPackages;
// Bugzilla 297940
@@ -913,59 +911,36 @@ public class Repository extends Container<Object> implements InternalRepository
distributor.run(InternalCommitContext.OPS, commitContext, monitor);
}
- public CDOCommitInfoHandler[] getCommitInfoHandlers()
+ @Deprecated
+ public void sendCommitNotification(InternalSession sender, CDOCommitInfo commitInfo)
{
- synchronized (commitInfoHandlers)
- {
- return commitInfoHandlers.toArray(new CDOCommitInfoHandler[commitInfoHandlers.size()]);
- }
+ sendCommitNotification(sender, commitInfo, true);
}
- /**
- * @since 4.0
- */
- public void addCommitInfoHandler(CDOCommitInfoHandler handler)
+ @Deprecated
+ public CDOCommitInfoHandler[] getCommitInfoHandlers()
{
- synchronized (commitInfoHandlers)
- {
- if (!commitInfoHandlers.contains(handler))
- {
- commitInfoHandlers.add(handler);
- }
- }
+ return commitInfoManager.getCommitInfoHandlers();
}
- /**
- * @since 4.0
- */
- public void removeCommitInfoHandler(CDOCommitInfoHandler handler)
+ @Deprecated
+ public void addCommitInfoHandler(CDOCommitInfoHandler handler)
{
- synchronized (commitInfoHandlers)
- {
- commitInfoHandlers.remove(handler);
- }
+ commitInfoManager.addCommitInfoHandler(handler);
}
@Deprecated
- public void sendCommitNotification(InternalSession sender, CDOCommitInfo commitInfo)
+ public void removeCommitInfoHandler(CDOCommitInfoHandler handler)
{
- sendCommitNotification(sender, commitInfo, true);
+ commitInfoManager.removeCommitInfoHandler(handler);
}
public void sendCommitNotification(InternalSession sender, CDOCommitInfo commitInfo, boolean clearResourcePathCache)
{
- sessionManager.sendCommitNotification(sender, commitInfo, clearResourcePathCache);
-
- for (CDOCommitInfoHandler handler : getCommitInfoHandlers())
+ if (!commitInfo.isEmpty())
{
- try
- {
- handler.handleCommitInfo(commitInfo);
- }
- catch (Exception ex)
- {
- OM.LOG.error(ex);
- }
+ sessionManager.sendCommitNotification(sender, commitInfo, clearResourcePathCache);
+ commitInfoManager.notifyCommitInfoHandlers(commitInfo);
}
}
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepository.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepository.java
index 70faf84169..1d5bb1a543 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepository.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/server/IRepository.java
@@ -13,6 +13,7 @@ package org.eclipse.emf.cdo.server;
import org.eclipse.emf.cdo.common.CDOCommonRepository;
import org.eclipse.emf.cdo.common.branch.CDOBranchManager;
import org.eclipse.emf.cdo.common.commit.CDOCommitInfoHandler;
+import org.eclipse.emf.cdo.common.commit.CDOCommitInfoManager;
import org.eclipse.emf.cdo.common.lock.IDurableLockingManager;
import org.eclipse.emf.cdo.common.model.CDOPackageRegistry;
import org.eclipse.emf.cdo.common.revision.CDORevision;
@@ -120,17 +121,23 @@ public interface IRepository extends CDOCommonRepository, IQueryHandlerProvider,
/**
* @since 4.1
+ * @deprecated As of 4.2 call {@link CDOCommitInfoManager#getCommitInfoHandlers()}
*/
+ @Deprecated
public CDOCommitInfoHandler[] getCommitInfoHandlers();
/**
* @since 4.0
+ * @deprecated As of 4.2 call {@link CDOCommitInfoManager#addCommitInfoHandler(CDOCommitInfoHandler)}
*/
+ @Deprecated
public void addCommitInfoHandler(CDOCommitInfoHandler handler);
/**
* @since 4.0
+ * @deprecated As of 4.2 call {@link CDOCommitInfoManager#removeCommitInfoHandler(CDOCommitInfoHandler)}
*/
+ @Deprecated
public void removeCommitInfoHandler(CDOCommitInfoHandler handler);
/**
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/CommitInfoTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/CommitInfoTest.java
index f9fa373569..1cf034564f 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/CommitInfoTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/CommitInfoTest.java
@@ -982,7 +982,7 @@ public class CommitInfoTest extends AbstractCDOTest
public void testLogThroughCommitInfoHandler() throws Exception
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
- getRepository().addCommitInfoHandler(new TextCommitInfoLog(baos));
+ getRepository().getCommitInfoManager().addCommitInfoHandler(new TextCommitInfoLog(baos));
CDOSession session = openSession();
CDOTransaction transaction = session.openTransaction();
@@ -1005,7 +1005,7 @@ public class CommitInfoTest extends AbstractCDOTest
ByteArrayOutputStream baos = new ByteArrayOutputStream();
AsyncCommitInfoHandler log = new AsyncCommitInfoHandler(new TextCommitInfoLog(baos));
log.activate();
- getRepository().addCommitInfoHandler(log);
+ getRepository().getCommitInfoManager().addCommitInfoHandler(log);
CDOSession session = openSession();
CDOTransaction transaction = session.openTransaction();
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/SessionTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/SessionTest.java
index 741d9c074c..6df36ff5a7 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/SessionTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/SessionTest.java
@@ -280,7 +280,9 @@ public class SessionTest extends AbstractCDOTest
CDOSession session = openSession("authrepo2");
assertEquals(USER_ID, session.getUserID());
- assertEquals(USER_ID, repository.getSessionManager().getSessions()[0].getUserID());
+
+ ISession serverSession = repository.getSessionManager().getSession(session.getSessionID());
+ assertEquals(USER_ID, serverSession.getUserID());
session.close();
}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/TransactionTest.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/TransactionTest.java
index dc95536b80..bdc4bd1e84 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/TransactionTest.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/TransactionTest.java
@@ -14,10 +14,10 @@ package org.eclipse.emf.cdo.tests;
import org.eclipse.emf.cdo.CDOObject;
import org.eclipse.emf.cdo.common.commit.CDOCommitInfo;
import org.eclipse.emf.cdo.common.commit.CDOCommitInfoHandler;
+import org.eclipse.emf.cdo.common.commit.CDOCommitInfoManager;
import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.internal.net4j.protocol.CommitTransactionRequest;
import org.eclipse.emf.cdo.net4j.CDONet4jSession;
-import org.eclipse.emf.cdo.server.IRepository;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.spi.common.commit.CDOCommitInfoUtil;
import org.eclipse.emf.cdo.tests.model1.Category;
@@ -50,7 +50,7 @@ import java.util.concurrent.TimeUnit;
/**
* See bug 213782, bug 201366
- *
+ *
* @author Simon McDuff
*/
public class TransactionTest extends AbstractCDOTest
@@ -476,8 +476,8 @@ public class TransactionTest extends AbstractCDOTest
}
};
- IRepository repository = getRepository();
- repository.addCommitInfoHandler(handler);
+ CDOCommitInfoManager commitInfoManager = getRepository().getCommitInfoManager();
+ commitInfoManager.addCommitInfoHandler(handler);
try
{
@@ -495,7 +495,7 @@ public class TransactionTest extends AbstractCDOTest
}
finally
{
- repository.removeCommitInfoHandler(handler);
+ commitInfoManager.removeCommitInfoHandler(handler);
}
}
diff --git a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/RepositoryConfig.java b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/RepositoryConfig.java
index 9f41e84552..955d547ee4 100644
--- a/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/RepositoryConfig.java
+++ b/plugins/org.eclipse.emf.cdo.tests/src/org/eclipse/emf/cdo/tests/config/impl/RepositoryConfig.java
@@ -15,6 +15,7 @@ import org.eclipse.emf.cdo.common.CDOCommonRepository.IDGenerationLocation;
import org.eclipse.emf.cdo.common.CDOCommonView;
import org.eclipse.emf.cdo.common.commit.CDOCommitInfo;
import org.eclipse.emf.cdo.common.commit.CDOCommitInfoHandler;
+import org.eclipse.emf.cdo.common.commit.CDOCommitInfoManager;
import org.eclipse.emf.cdo.common.revision.CDORevisionUtil;
import org.eclipse.emf.cdo.internal.common.revision.NOOPRevisionCache;
import org.eclipse.emf.cdo.internal.net4j.CDONet4jSessionConfigurationImpl;
@@ -478,9 +479,10 @@ public abstract class RepositoryConfig extends Config implements IRepositoryConf
repository.removeHandler(handler);
}
- for (CDOCommitInfoHandler handler : repository.getCommitInfoHandlers())
+ CDOCommitInfoManager commitInfoManager = repository.getCommitInfoManager();
+ for (CDOCommitInfoHandler handler : commitInfoManager.getCommitInfoHandlers())
{
- repository.removeCommitInfoHandler(handler);
+ commitInfoManager.removeCommitInfoHandler(handler);
}
}
}
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java
index 6a0ed8cf4b..6be2ac5a09 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/session/CDOSessionImpl.java
@@ -1150,6 +1150,7 @@ public abstract class CDOSessionImpl extends CDOTransactionContainerImpl impleme
if (success)
{
fireInvalidationEvent(sender, commitInfo);
+ commitInfoManager.notifyCommitInfoHandlers(commitInfo);
}
for (InternalCDOView view : getViews())

Back to the top