Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContext.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContext.java36
1 files changed, 28 insertions, 8 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContext.java b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContext.java
index 8f2acf818c..d4c16c6af9 100644
--- a/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContext.java
+++ b/plugins/org.eclipse.emf.cdo.server/src/org/eclipse/emf/cdo/internal/server/TransactionCommitContext.java
@@ -28,6 +28,7 @@ import org.eclipse.emf.cdo.common.lock.CDOLockOwner;
import org.eclipse.emf.cdo.common.lock.CDOLockState;
import org.eclipse.emf.cdo.common.lock.CDOLockUtil;
import org.eclipse.emf.cdo.common.model.CDOPackageUnit;
+import org.eclipse.emf.cdo.common.protocol.CDOProtocol.CommitNotificationInfo;
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
import org.eclipse.emf.cdo.common.revision.CDOIDAndBranch;
import org.eclipse.emf.cdo.common.revision.CDOIDAndVersion;
@@ -66,7 +67,6 @@ import org.eclipse.emf.cdo.spi.common.revision.StubCDORevision;
import org.eclipse.emf.cdo.spi.server.InternalCommitContext;
import org.eclipse.emf.cdo.spi.server.InternalLockManager;
import org.eclipse.emf.cdo.spi.server.InternalRepository;
-import org.eclipse.emf.cdo.spi.server.InternalSession;
import org.eclipse.emf.cdo.spi.server.InternalTransaction;
import org.eclipse.net4j.util.CheckUtil;
@@ -132,8 +132,6 @@ public class TransactionCommitContext implements InternalCommitContext
private String commitComment;
- private boolean clearResourcePathCache;
-
private boolean usingEcore;
private boolean usingEtypes;
@@ -186,6 +184,8 @@ public class TransactionCommitContext implements InternalCommitContext
private Map<Object, Object> data;
+ private CommitNotificationInfo commitNotificationInfo = new CommitNotificationInfo();
+
public TransactionCommitContext(InternalTransaction transaction)
{
this.transaction = transaction;
@@ -257,7 +257,12 @@ public class TransactionCommitContext implements InternalCommitContext
public boolean isClearResourcePathCache()
{
- return clearResourcePathCache;
+ return commitNotificationInfo.isClearResourcePathCache();
+ }
+
+ public boolean isClearPermissionCache()
+ {
+ return commitNotificationInfo.getSecurityImpact() != CommitNotificationInfo.IMPACT_NONE;
}
public boolean isUsingEcore()
@@ -473,7 +478,13 @@ public class TransactionCommitContext implements InternalCommitContext
public void setClearResourcePathCache(boolean clearResourcePathCache)
{
- this.clearResourcePathCache = clearResourcePathCache;
+ commitNotificationInfo.setClearResourcePathCache(clearResourcePathCache);
+ }
+
+ public void setSecurityImpact(byte securityImpact, Set<? extends Object> impactedRules)
+ {
+ commitNotificationInfo.setSecurityImpact(securityImpact);
+ commitNotificationInfo.setImpactedRules(impactedRules);
}
public void setUsingEcore(boolean usingEcore)
@@ -803,10 +814,19 @@ public class TransactionCommitContext implements InternalCommitContext
private void sendCommitNotifications(boolean success)
{
- InternalSession sender = transaction.getSession();
- CDOCommitInfo commitInfo = success ? createCommitInfo() : createFailureCommitInfo();
+ commitNotificationInfo.setSender(transaction.getSession());
+ commitNotificationInfo.setRevisionProvider(this);
+
+ if (success)
+ {
+ commitNotificationInfo.setCommitInfo(createCommitInfo());
+ }
+ else
+ {
+ commitNotificationInfo.setCommitInfo(createFailureCommitInfo());
+ }
- repository.sendCommitNotification(sender, commitInfo, clearResourcePathCache, this);
+ repository.sendCommitNotification(commitNotificationInfo);
}
public CDOCommitInfo createCommitInfo()

Back to the top