Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEsteban Dugueperoux2015-05-14 09:29:06 +0000
committerEike Stepper2015-05-14 09:29:06 +0000
commited8fd5c013e4c2c0fb134b95f7b8be75aaf0aa46 (patch)
tree3f8aa1db4fff448fc9ecbd4b61e50e2ce5fdb957 /plugins/org.eclipse.emf.cdo.common/src
parentf9ad60bad8f4e3c07a8f0d4ac545d113f662e989 (diff)
downloadcdo-ed8fd5c013e4c2c0fb134b95f7b8be75aaf0aa46.tar.gz
cdo-ed8fd5c013e4c2c0fb134b95f7b8be75aaf0aa46.tar.xz
cdo-ed8fd5c013e4c2c0fb134b95f7b8be75aaf0aa46.zip
[456993] Have EClass.allInstances query works on branches
- Have EClass.allInstances ocl query works when no instances of EClass exists on the repository. - Have it also on branches. - Same for CDOView.queryInstances() query. - Don't returns deleted instances. Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=456993 Change-Id: I46cd0e05b6f99edb3bba4ac41158c7d3b4bc927d Signed-off-by: Esteban Dugueperoux <esteban.dugueperoux@obeo.fr> Signed-off-by: Eike Stepper <stepper@esc-net.de>
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.common/src')
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClassifierRef.java3
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/util/CDOClassNotFoundException.java53
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/util/CDOPackageNotFoundException.java42
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/CDOQueryInfoImpl.java32
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/messages/messages.properties3
-rw-r--r--plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/protocol/CDODataInputImpl.java3
6 files changed, 130 insertions, 6 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClassifierRef.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClassifierRef.java
index aa4782fb4d..a0e8ef242b 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClassifierRef.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClassifierRef.java
@@ -12,6 +12,7 @@ package org.eclipse.emf.cdo.common.model;
import org.eclipse.emf.cdo.common.protocol.CDODataInput;
import org.eclipse.emf.cdo.common.protocol.CDODataOutput;
+import org.eclipse.emf.cdo.common.util.CDOPackageNotFoundException;
import org.eclipse.emf.cdo.internal.common.messages.Messages;
import org.eclipse.net4j.util.ObjectUtil;
@@ -113,7 +114,7 @@ public final class CDOClassifierRef implements Serializable
EPackage ePackage = packageRegistry.getEPackage(packageURI);
if (ePackage == null)
{
- throw new IllegalStateException(MessageFormat.format(Messages.getString("CDOClassifierRef.0"), packageURI)); //$NON-NLS-1$
+ throw new CDOPackageNotFoundException(packageURI);
}
return ePackage.getEClassifier(classifierName);
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/util/CDOClassNotFoundException.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/util/CDOClassNotFoundException.java
new file mode 100644
index 0000000000..9fd9018a1d
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/util/CDOClassNotFoundException.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2004-2014 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:
+ * Esteban Dugueperoux - initial API and implementation
+ */
+package org.eclipse.emf.cdo.common.util;
+
+import org.eclipse.emf.cdo.common.model.CDOClassifierRef;
+import org.eclipse.emf.cdo.internal.common.messages.Messages;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EPackage.Registry;
+
+import java.text.MessageFormat;
+
+/**
+ * A {@link CDOException} to indicate that an {@link EClass} is not available for an {@link EPackage} in the current {@link Registry}.
+ *
+ * @author Esteban Dugueperoux
+ * @since 4.4
+ */
+public final class CDOClassNotFoundException extends CDOException
+{
+ private static final long serialVersionUID = 1L;
+
+ private final String packageURI;
+
+ private final String classifierName;
+
+ public CDOClassNotFoundException(String packageURI, String classifierName)
+ {
+ super(MessageFormat.format(Messages.getString("CDOSessionImpl.1"),
+ packageURI + CDOClassifierRef.URI_SEPARATOR + classifierName));
+ this.packageURI = packageURI;
+ this.classifierName = classifierName;
+ }
+
+ public String getPackageURI()
+ {
+ return packageURI;
+ }
+
+ public String getClassifierName()
+ {
+ return classifierName;
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/util/CDOPackageNotFoundException.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/util/CDOPackageNotFoundException.java
new file mode 100644
index 0000000000..8b9edc9317
--- /dev/null
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/util/CDOPackageNotFoundException.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2004-2014 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:
+ * Esteban Dugueperoux - initial API and implementation
+ */
+package org.eclipse.emf.cdo.common.util;
+
+import org.eclipse.emf.cdo.internal.common.messages.Messages;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EPackage.Registry;
+
+import java.text.MessageFormat;
+
+/**
+ * A {@link CDOException} to indicate that an {@link EPackage} is not available in the current {@link Registry}.
+ *
+ * @author Esteban Dugueperoux
+ * @since 4.4
+ */
+public final class CDOPackageNotFoundException extends CDOException
+{
+ private static final long serialVersionUID = 1L;
+
+ private final String packageURI;
+
+ public CDOPackageNotFoundException(String packageURI)
+ {
+ super(MessageFormat.format(Messages.getString("CDOSessionImpl.0"), packageURI));
+ this.packageURI = packageURI;
+ }
+
+ public String getPackageURI()
+ {
+ return packageURI;
+ }
+}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/CDOQueryInfoImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/CDOQueryInfoImpl.java
index 49630ce875..82aa8acfb6 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/CDOQueryInfoImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/CDOQueryInfoImpl.java
@@ -15,6 +15,8 @@ import org.eclipse.emf.cdo.common.commit.CDOChangeSetData;
import org.eclipse.emf.cdo.common.protocol.CDODataInput;
import org.eclipse.emf.cdo.common.protocol.CDODataOutput;
import org.eclipse.emf.cdo.common.util.CDOQueryInfo;
+import org.eclipse.emf.cdo.common.util.CDOClassNotFoundException;
+import org.eclipse.emf.cdo.common.util.CDOPackageNotFoundException;
import java.io.IOException;
import java.util.Collections;
@@ -50,7 +52,20 @@ public class CDOQueryInfoImpl implements CDOQueryInfo
{
queryLanguage = in.readString();
queryString = in.readString();
- context = in.readCDORevisionOrPrimitiveOrClassifier();
+
+ try
+ {
+ context = in.readCDORevisionOrPrimitiveOrClassifier();
+ }
+ catch (CDOPackageNotFoundException e)
+ {
+ //$FALL-THROUGH$
+ }
+ catch (CDOClassNotFoundException e)
+ {
+ //$FALL-THROUGH$
+ }
+
maxResults = in.readInt();
if (in.readBoolean())
@@ -62,8 +77,19 @@ public class CDOQueryInfoImpl implements CDOQueryInfo
for (int i = 0; i < size; i++)
{
String key = in.readString();
- Object object = in.readCDORevisionOrPrimitiveOrClassifier();
- parameters.put(key, object);
+ try
+ {
+ Object object = in.readCDORevisionOrPrimitiveOrClassifier();
+ parameters.put(key, object);
+ }
+ catch (CDOPackageNotFoundException e)
+ {
+ //$FALL-THROUGH$
+ }
+ catch (CDOClassNotFoundException e)
+ {
+ //$FALL-THROUGH$
+ }
}
}
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/messages/messages.properties b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/messages/messages.properties
index 3b20c8646c..b2082fbcfb 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/messages/messages.properties
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/messages/messages.properties
@@ -12,7 +12,6 @@ AbstractCDORevision.0=EClass is abstract: {0}
AbstractCDORevision.1=CDOID is null
AbstractCDORevision.2=Missing ID mapping for {0}
AbstractCDORevision.20=Could not find feature {0} in class {1}
-CDOClassifierRef.0=Package not found: {0}
CDOClassifierRef.1=Invalid classifier URI:
CDODataInputImpl.5=Invalid CDOFeatureDelta type
CDODataOutputImpl.5=Temporary ID not supported: {0}
@@ -31,6 +30,8 @@ CDOPackageUnit.0=Package unit type is unknown
CDOPackageUnitImpl.0=UNINITIALIZED
CDOPackageUnitImpl.1=Package unit not initialized
CDORevisionUtil.0=UNINITIALIZED
+CDOSessionImpl.0=Package locally not available: {0}
+CDOSessionImpl.1=Class locally not available: {0}
CDOTypeImpl.23=Cannot find the enum literal {0}
DLRevisionList.0=Cannot assign to a different list while linked to a list
DLRevisionList.3=Holder {0} is still linked in different list
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/protocol/CDODataInputImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/protocol/CDODataInputImpl.java
index e12220e516..abd9a272e1 100644
--- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/protocol/CDODataInputImpl.java
+++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/protocol/CDODataInputImpl.java
@@ -50,6 +50,7 @@ import org.eclipse.emf.cdo.common.revision.CDORevisionKey;
import org.eclipse.emf.cdo.common.revision.CDORevisionUtil;
import org.eclipse.emf.cdo.common.revision.delta.CDOFeatureDelta;
import org.eclipse.emf.cdo.common.revision.delta.CDORevisionDelta;
+import org.eclipse.emf.cdo.common.util.CDOClassNotFoundException;
import org.eclipse.emf.cdo.internal.common.bundle.OM;
import org.eclipse.emf.cdo.internal.common.commit.CDOChangeSetDataImpl;
import org.eclipse.emf.cdo.internal.common.commit.FailureCommitInfo;
@@ -170,7 +171,7 @@ public abstract class CDODataInputImpl extends ExtendedDataInput.Delegating impl
EClassifier classifier = classifierRef.resolve(getPackageRegistry());
if (classifier == null)
{
- throw new IOException("Unable to resolve " + classifierRef);
+ throw new CDOClassNotFoundException(classifierRef.getPackageURI(), classifierRef.getClassifierName());
}
return classifier;

Back to the top