Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2011-01-06 16:10:15 +0000
committerEike Stepper2011-01-06 16:10:15 +0000
commit46b3ceb3a47a9054de0719886c723a71a808ff91 (patch)
tree99958f837ee5cbf4c1378e52f7c22052995e34b3 /plugins/org.eclipse.emf.cdo.server.net4j
parent56132fe81debf29f34621ddd51de2bf52721eefb (diff)
downloadcdo-46b3ceb3a47a9054de0719886c723a71a808ff91.tar.gz
cdo-46b3ceb3a47a9054de0719886c723a71a808ff91.tar.xz
cdo-46b3ceb3a47a9054de0719886c723a71a808ff91.zip
[333663] Provide a ReferentialIntegrityException with full XRef infos
https://bugs.eclipse.org/bugs/show_bug.cgi?id=333663
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.server.net4j')
-rw-r--r--plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionIndication.java20
-rw-r--r--plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitXATransactionCancelIndication.java4
-rw-r--r--plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitXATransactionPhase1Indication.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitXATransactionPhase2Indication.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitXATransactionPhase3Indication.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/QueryIndication.java17
6 files changed, 26 insertions, 21 deletions
diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionIndication.java
index b1acaa02b2..cb5cd36a78 100644
--- a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitTransactionIndication.java
@@ -14,6 +14,7 @@
package org.eclipse.emf.cdo.server.internal.net4j.protocol;
import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.id.CDOIDReference;
import org.eclipse.emf.cdo.common.model.EMFUtil;
import org.eclipse.emf.cdo.common.protocol.CDODataInput;
import org.eclipse.emf.cdo.common.protocol.CDODataOutput;
@@ -40,6 +41,7 @@ import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;
import java.io.IOException;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -238,7 +240,7 @@ public class CommitTransactionIndication extends CDOServerIndicationWithMonitori
try
{
- success = respondingException(out, commitContext.getRollbackMessage());
+ success = respondingException(out, commitContext.getRollbackMessage(), commitContext.getXRefs());
if (success)
{
respondingResult(out);
@@ -251,13 +253,27 @@ public class CommitTransactionIndication extends CDOServerIndicationWithMonitori
}
}
- protected boolean respondingException(CDODataOutput out, String rollbackMessage) throws Exception
+ protected boolean respondingException(CDODataOutput out, String rollbackMessage, List<CDOIDReference> xRefs)
+ throws Exception
{
boolean success = rollbackMessage == null;
out.writeBoolean(success);
if (!success)
{
out.writeString(rollbackMessage);
+
+ if (xRefs != null)
+ {
+ out.writeInt(xRefs.size());
+ for (CDOIDReference xRef : xRefs)
+ {
+ out.writeCDOIDReference(xRef);
+ }
+ }
+ else
+ {
+ out.writeInt(0);
+ }
}
return success;
diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitXATransactionCancelIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitXATransactionCancelIndication.java
index 4089b360ec..5a14bbe488 100644
--- a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitXATransactionCancelIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitXATransactionCancelIndication.java
@@ -4,7 +4,7 @@
* 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:
* Simon McDuff - initial API and implementation
* Eike Stepper - maintenance
@@ -54,7 +54,7 @@ public class CommitXATransactionCancelIndication extends CommitTransactionIndica
exceptionMessage = commitContext.getRollbackMessage();
}
- respondingException(out, exceptionMessage);
+ respondingException(out, exceptionMessage, null);
}
@Override
diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitXATransactionPhase1Indication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitXATransactionPhase1Indication.java
index 1acbf04f44..b5c100173c 100644
--- a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitXATransactionPhase1Indication.java
+++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitXATransactionPhase1Indication.java
@@ -61,7 +61,7 @@ public class CommitXATransactionPhase1Indication extends CommitTransactionIndica
exceptionMessage = commitContext.getRollbackMessage();
}
- boolean success = respondingException(out, exceptionMessage);
+ boolean success = respondingException(out, exceptionMessage, null);
if (success)
{
respondingResult(out);
diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitXATransactionPhase2Indication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitXATransactionPhase2Indication.java
index 094d54faed..d3d36e3650 100644
--- a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitXATransactionPhase2Indication.java
+++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitXATransactionPhase2Indication.java
@@ -86,7 +86,7 @@ public class CommitXATransactionPhase2Indication extends CommitTransactionIndica
exceptionMessage = commitContext.getRollbackMessage();
}
- respondingException(out, exceptionMessage);
+ respondingException(out, exceptionMessage, null);
}
@Override
diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitXATransactionPhase3Indication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitXATransactionPhase3Indication.java
index 7c16f35a9f..2b9d73c0e4 100644
--- a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitXATransactionPhase3Indication.java
+++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/CommitXATransactionPhase3Indication.java
@@ -37,7 +37,7 @@ public class CommitXATransactionPhase3Indication extends CommitTransactionIndica
protected void responding(CDODataOutput out, OMMonitor monitor) throws Exception
{
commitContext.commit(monitor);
- boolean success = respondingException(out, commitContext.getRollbackMessage());
+ boolean success = respondingException(out, commitContext.getRollbackMessage(), null);
commitContext.postCommit(success);
}
diff --git a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/QueryIndication.java b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/QueryIndication.java
index a14f717341..5e2db4ad7e 100644
--- a/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/QueryIndication.java
+++ b/plugins/org.eclipse.emf.cdo.server.net4j/src/org/eclipse/emf/cdo/server/internal/net4j/protocol/QueryIndication.java
@@ -11,7 +11,7 @@
*/
package org.eclipse.emf.cdo.server.internal.net4j.protocol;
-import org.eclipse.emf.cdo.common.id.CDOID;
+import org.eclipse.emf.cdo.common.id.CDOIDReference;
import org.eclipse.emf.cdo.common.protocol.CDODataInput;
import org.eclipse.emf.cdo.common.protocol.CDODataOutput;
import org.eclipse.emf.cdo.common.protocol.CDOProtocolConstants;
@@ -24,8 +24,6 @@ import org.eclipse.emf.cdo.spi.server.InternalView;
import org.eclipse.net4j.util.om.trace.ContextTracer;
-import org.eclipse.emf.ecore.EReference;
-
import java.io.IOException;
/**
@@ -75,17 +73,8 @@ public class QueryIndication extends CDOReadIndication
if (xrefs)
{
- Object[] values = (Object[])object;
- CDOID targetID = (CDOID)values[0];
- CDOID sourceID = (CDOID)values[1];
- EReference sourceReference = (EReference)values[2];
- int sourceIndex = (Integer)values[3];
-
- out.writeCDOID(targetID);
- out.writeCDOID(sourceID);
- out.writeCDOClassifierRef(sourceReference.getEContainingClass());
- out.writeString(sourceReference.getName());
- out.writeInt(sourceIndex);
+ CDOIDReference idReference = (CDOIDReference)object;
+ out.writeCDOIDReference(idReference);
}
else
{

Back to the top