diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.common/src')
16 files changed, 123 insertions, 313 deletions
diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDReference.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDReference.java index 4144c518ef..af666f1ca7 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDReference.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOIDReference.java @@ -14,6 +14,7 @@ import org.eclipse.emf.cdo.common.protocol.CDODataInput; import org.eclipse.emf.cdo.common.protocol.CDODataOutput; import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.EStructuralFeature; import java.io.IOException; @@ -32,15 +33,15 @@ public class CDOIDReference implements CDOReference<CDOID> private CDOID sourceID; - private EStructuralFeature sourceFeature; + private EReference sourceReference; private int sourceIndex; - public CDOIDReference(CDOID targetID, CDOID sourceID, EStructuralFeature sourceFeature, int sourceIndex) + public CDOIDReference(CDOID targetID, CDOID sourceID, EStructuralFeature sourceReference, int sourceIndex) { this.targetID = targetID; this.sourceID = sourceID; - this.sourceFeature = sourceFeature; + this.sourceReference = (EReference)sourceReference; this.sourceIndex = sourceIndex; } @@ -51,7 +52,7 @@ public class CDOIDReference implements CDOReference<CDOID> EClass eClass = (EClass)in.readCDOClassifierRefAndResolve(); String featureName = in.readString(); - sourceFeature = eClass.getEStructuralFeature(featureName); + sourceReference = (EReference)eClass.getEStructuralFeature(featureName); sourceIndex = in.readXInt(); } @@ -60,8 +61,8 @@ public class CDOIDReference implements CDOReference<CDOID> { out.writeCDOID(targetID); out.writeCDOID(sourceID); - out.writeCDOClassifierRef(sourceFeature.getEContainingClass()); - out.writeString(sourceFeature.getName()); + out.writeCDOClassifierRef(sourceReference.getEContainingClass()); + out.writeString(sourceReference.getName()); out.writeXInt(sourceIndex); } @@ -77,10 +78,17 @@ public class CDOIDReference implements CDOReference<CDOID> return sourceID; } + @Deprecated @Override public EStructuralFeature getSourceFeature() { - return sourceFeature; + return sourceReference; + } + + @Override + public EReference getSourceReference() + { + return sourceReference; } @Override @@ -95,7 +103,7 @@ public class CDOIDReference implements CDOReference<CDOID> StringBuilder builder = new StringBuilder(); builder.append(sourceID); builder.append("."); - builder.append(sourceFeature.getName()); + builder.append(sourceReference.getName()); if (sourceIndex != NO_INDEX) { builder.append("["); diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOReference.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOReference.java index 977052f3b1..a76713dc06 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOReference.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/id/CDOReference.java @@ -11,10 +11,8 @@ package org.eclipse.emf.cdo.common.id; import org.eclipse.emf.common.notify.Notification; -import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.util.FeatureMap; /** * Represents a reference from one object to another object, possibly {@link CDOID} or CDOObject typed. @@ -33,10 +31,17 @@ public interface CDOReference<OBJECT> public OBJECT getSourceObject(); /** - * Returns the source {@link EReference} or the source {@link EAttribute} if the source feature is a - * {@link FeatureMap}. + * Returns the source {@link EReference}. + * @deprecated As of 4.10 use {@link #getSourceReference()}. */ + @Deprecated public EStructuralFeature getSourceFeature(); + /** + * Returns the source {@link EReference}. + * @since 4.10 + */ + public EReference getSourceReference(); + public int getSourceIndex(); } diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClassInfo.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClassInfo.java index 9bbad98b40..ace54e4779 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClassInfo.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOClassInfo.java @@ -50,6 +50,11 @@ public interface CDOClassInfo extends Adapter */ public boolean hasPersistentOpposite(EStructuralFeature feature); + /** + * @since 4.10 + */ + public boolean hasPersistentFeatureMaps(); + public EStructuralFeature[] getAllPersistentFeatures(); /** diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelUtil.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelUtil.java index d075cb76a2..a8ee048496 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelUtil.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOModelUtil.java @@ -15,6 +15,7 @@ package org.eclipse.emf.cdo.common.model; import org.eclipse.emf.cdo.common.id.CDOID; import org.eclipse.emf.cdo.common.revision.CDORevision; +import org.eclipse.emf.cdo.common.util.CDOException; import org.eclipse.emf.cdo.internal.common.bundle.OM; import org.eclipse.emf.cdo.internal.common.messages.Messages; import org.eclipse.emf.cdo.internal.common.model.CDOClassInfoImpl; @@ -22,6 +23,7 @@ import org.eclipse.emf.cdo.internal.common.model.CDOPackageInfoImpl; import org.eclipse.emf.cdo.internal.common.model.CDOPackageRegistryImpl; import org.eclipse.emf.cdo.internal.common.model.CDOPackageUnitImpl; import org.eclipse.emf.cdo.internal.common.model.CDOTypeImpl; +import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit; import org.eclipse.net4j.util.io.ExtendedDataInput; import org.eclipse.net4j.util.io.ExtendedDataOutput; @@ -44,7 +46,6 @@ import org.eclipse.emf.ecore.EcorePackage; import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.util.EcoreUtil; -import org.eclipse.emf.ecore.util.FeatureMap; import org.eclipse.emf.ecore.util.FeatureMapUtil; import java.io.IOException; @@ -288,11 +289,6 @@ public final class CDOModelUtil implements CDOModelConstants */ public static CDOType getType(EStructuralFeature feature) { - if (FeatureMapUtil.isFeatureMap(feature)) - { - return CDOType.FEATURE_MAP_ENTRY; - } - return getType(feature.getEType()); } @@ -524,11 +520,6 @@ public final class CDOModelUtil implements CDOModelConstants return CDOType.BIG_INTEGER; } - if (object instanceof FeatureMap.Entry) - { - return CDOType.FEATURE_MAP_ENTRY; - } - if (object instanceof Throwable) { return CDOType.EXCEPTION; @@ -726,6 +717,54 @@ public final class CDOModelUtil implements CDOModelConstants } /** + * @since 4.10 + */ + public static void checkNoFeatureMaps(StringBuilder builder, EPackage ePackage, boolean checkFeatureMapEntries) + { + for (TreeIterator<EObject> it = ePackage.eAllContents(); it.hasNext();) + { + EObject packageElement = it.next(); + if (checkFeatureMapEntries && packageElement instanceof EClassifier) + { + EClassifier classifier = (EClassifier)packageElement; + if (FeatureMapUtil.isFeatureMapEntry(classifier)) + { + builder.append(String.format("Package '%s' contains feature map entry '%s'", ePackage.getNsURI(), classifier.getName())); + builder.append("\n"); + } + } + else if (packageElement instanceof EStructuralFeature) + { + EStructuralFeature feature = (EStructuralFeature)packageElement; + if (FeatureMapUtil.isFeatureMap(feature)) + { + EClass eClass = feature.getEContainingClass(); + builder.append(String.format("Package '%s' contains feature map '%s.%s'", ePackage.getNsURI(), eClass.getName(), feature.getName())); + builder.append("\n"); + } + } + } + } + + /** + * @since 4.10 + */ + public static void checkNoFeatureMaps(InternalCDOPackageUnit[] packageUnits, boolean checkFeatureMapEntries) throws CDOException + { + StringBuilder builder = new StringBuilder(); + for (InternalCDOPackageUnit packageUnit : packageUnits) + { + EPackage ePackage = packageUnit.getTopLevelPackageInfo().getEPackage(); + checkNoFeatureMaps(builder, ePackage, checkFeatureMapEntries); + } + + if (builder.length() != 0) + { + throw new CDOException(builder.toString()); + } + } + + /** * @since 4.0 */ public static Map<EClass, List<EClass>> getSubTypes(EPackage.Registry packageRegistry) diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOType.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOType.java index a7fa69ffc5..66c4a34718 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOType.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/CDOType.java @@ -133,8 +133,10 @@ public interface CDOType /** * @since 2.0 + * @deprecated As of 4.5 {@link org.eclipse.emf.ecore.util.FeatureMap feature maps} are no longer supported. */ - public static final CDOType FEATURE_MAP_ENTRY = org.eclipse.emf.cdo.internal.common.model.CDOTypeImpl.FEATURE_MAP_ENTRY; + @Deprecated + public static final CDOType FEATURE_MAP_ENTRY = null; /** * @since 4.3 diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/EMFUtil.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/EMFUtil.java index dea292b4ee..31fb13e60d 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/EMFUtil.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/model/EMFUtil.java @@ -40,7 +40,6 @@ import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.emf.ecore.util.EcoreUtil; -import org.eclipse.emf.ecore.util.FeatureMap; import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl; import java.io.ByteArrayInputStream; @@ -242,26 +241,7 @@ public final class EMFUtil builder.append('@'); builder.append(eStructuralFeature.getName()); - if (eStructuralFeature instanceof EAttribute) - { - FeatureMap featureMap = (FeatureMap)container.eGet(eStructuralFeature, false); - for (int i = 0, size = featureMap.size(); i < size; ++i) - { - if (featureMap.getValue(i) == eObject) - { - EStructuralFeature entryFeature = featureMap.getEStructuralFeature(i); - if (entryFeature instanceof EReference && ((EReference)entryFeature).isContainment()) - { - builder.append('.'); - builder.append(i); - return builder.toString(); - } - } - } - - builder.append(".-1"); - } - else if (eStructuralFeature.isMany()) + if (eStructuralFeature.isMany()) { EList<?> eList = (EList<?>)container.eGet(eStructuralFeature, false); int index = eList.indexOf(eObject); diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java index 523cd380fd..f9bfd55125 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/common/revision/CDORevisionUtil.java @@ -28,7 +28,6 @@ import org.eclipse.emf.cdo.common.util.CDOCommonUtil; import org.eclipse.emf.cdo.internal.common.commit.CDOChangeSetDataImpl; import org.eclipse.emf.cdo.internal.common.commit.CDOChangeSetImpl; import org.eclipse.emf.cdo.internal.common.messages.Messages; -import org.eclipse.emf.cdo.internal.common.revision.CDOFeatureMapEntryImpl; import org.eclipse.emf.cdo.internal.common.revision.CDORevisableImpl; import org.eclipse.emf.cdo.internal.common.revision.CDORevisionCacheAuditing; import org.eclipse.emf.cdo.internal.common.revision.CDORevisionCacheBranching; @@ -37,7 +36,6 @@ import org.eclipse.emf.cdo.internal.common.revision.CDORevisionImpl; import org.eclipse.emf.cdo.internal.common.revision.CDORevisionKeyImpl; import org.eclipse.emf.cdo.internal.common.revision.CDORevisionManagerImpl; import org.eclipse.emf.cdo.internal.common.revision.delta.CDORevisionDeltaImpl; -import org.eclipse.emf.cdo.spi.common.revision.CDOFeatureMapEntry; import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision; import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionDelta; import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionManager; @@ -46,7 +44,6 @@ import org.eclipse.emf.cdo.spi.common.revision.ManagedRevisionProvider; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.util.FeatureMap; import java.io.ByteArrayOutputStream; import java.io.PrintStream; @@ -192,18 +189,22 @@ public final class CDORevisionUtil /** * @since 2.0 + * @deprecated As of 4.5 {@link org.eclipse.emf.ecore.util.FeatureMap feature maps} are no longer supported. */ - public static FeatureMap.Entry createFeatureMapEntry(EStructuralFeature feature, Object value) + @Deprecated + public static org.eclipse.emf.ecore.util.FeatureMap.Entry createFeatureMapEntry(EStructuralFeature feature, Object value) { - return new CDOFeatureMapEntryImpl(feature, value); + throw new UnsupportedOperationException(); } /** * @since 3.0 + * @deprecated As of 4.5 {@link org.eclipse.emf.ecore.util.FeatureMap feature maps} are no longer supported. */ - public static CDOFeatureMapEntry createCDOFeatureMapEntry() + @Deprecated + public static org.eclipse.emf.cdo.spi.common.revision.CDOFeatureMapEntry createCDOFeatureMapEntry() { - return new CDOFeatureMapEntryImpl(); + throw new UnsupportedOperationException(); } /** diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOClassInfoImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOClassInfoImpl.java index f5b44b4037..9c8db801bb 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOClassInfoImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOClassInfoImpl.java @@ -57,6 +57,8 @@ public final class CDOClassInfoImpl implements InternalCDOClassInfo, Adapter.Int private EClass eClass; + private boolean hasPersistentFeatureMaps; + private final BitSet persistentBits = new BitSet(); private final BitSet persistentOppositeBits = new BitSet(); @@ -181,6 +183,12 @@ public final class CDOClassInfoImpl implements InternalCDOClassInfo, Adapter.Int } @Override + public boolean hasPersistentFeatureMaps() + { + return hasPersistentFeatureMaps; + } + + @Override public EStructuralFeature[] getAllPersistentFeatures() { return allPersistentFeatures; @@ -336,7 +344,12 @@ public final class CDOClassInfoImpl implements InternalCDOClassInfo, Adapter.Int persistentMapFeatures.add(feature); } - if (feature.isMany() || FeatureMapUtil.isFeatureMap(feature)) + if (FeatureMapUtil.isFeatureMap(feature)) + { + hasPersistentFeatureMaps = true; + } + + if (feature.isMany()) { settingsFeatureIndices[i] = settingsFeatureCount++; } diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOTypeImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOTypeImpl.java index 7f68ebfd8f..b471c6a17c 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOTypeImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/model/CDOTypeImpl.java @@ -23,7 +23,6 @@ import org.eclipse.emf.cdo.common.protocol.CDODataInput; import org.eclipse.emf.cdo.common.protocol.CDODataOutput; import org.eclipse.emf.cdo.common.revision.CDORevision; import org.eclipse.emf.cdo.common.revision.CDORevisionData; -import org.eclipse.emf.cdo.common.revision.CDORevisionUtil; import org.eclipse.emf.cdo.internal.common.messages.Messages; import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry; import org.eclipse.emf.cdo.spi.common.revision.CDOReferenceAdjuster; @@ -38,7 +37,6 @@ import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.EStructuralFeature.Internal.DynamicValueHolder; import org.eclipse.emf.ecore.EcorePackage; import org.eclipse.emf.ecore.util.EcoreUtil; -import org.eclipse.emf.ecore.util.FeatureMap; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -470,51 +468,6 @@ public abstract class CDOTypeImpl implements CDOType } }; - public static final CDOType FEATURE_MAP_ENTRY = new CDOTypeImpl("FEATURE_MAP_ENTRY", EcorePackage.EFEATURE_MAP_ENTRY, //$NON-NLS-1$ - false) - { - @Override - protected FeatureMap.Entry doCopyValue(Object value) - { - FeatureMap.Entry entry = (FeatureMap.Entry)value; - EStructuralFeature innerFeature = entry.getEStructuralFeature(); - Object innerValue = entry.getValue(); - CDOType innerType = CDOModelUtil.getType(innerFeature.getEType()); - - Object innerCopy = innerType.copyValue(innerValue); - return CDORevisionUtil.createFeatureMapEntry(innerFeature, innerCopy); - } - - @Override - public void writeValue(CDODataOutput out, Object value) throws IOException - { - throw new UnsupportedOperationException(); - } - - @Override - public FeatureMap.Entry readValue(CDODataInput in) throws IOException - { - throw new UnsupportedOperationException(); - } - - @Override - public Object doAdjustReferences(CDOReferenceAdjuster adjuster, Object value, EStructuralFeature feature, int index) - { - FeatureMap.Entry entry = (FeatureMap.Entry)value; - EStructuralFeature innerFeature = entry.getEStructuralFeature(); - Object innerValue = entry.getValue(); - CDOType innerType = CDOModelUtil.getType(innerFeature.getEType()); - - Object innerCopy = innerType.adjustReferences(adjuster, innerValue, feature, index); - if (innerCopy != innerValue) // Just an optimization for NOOP adjusters - { - value = CDORevisionUtil.createFeatureMapEntry(innerFeature, innerCopy); - } - - return value; - } - }; - public static final CDOType JAVA_CLASS = new ObjectType("JAVA_CLASS", EcorePackage.EJAVA_CLASS) //$NON-NLS-1$ { @Override diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOFeatureMapEntryImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOFeatureMapEntryImpl.java deleted file mode 100644 index 4cbcadd06d..0000000000 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/CDOFeatureMapEntryImpl.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2009, 2011, 2012, 2019 Eike Stepper (Loehne, 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.internal.common.revision; - -import org.eclipse.emf.cdo.spi.common.revision.CDOFeatureMapEntry; - -import org.eclipse.emf.ecore.EStructuralFeature; - -import java.text.MessageFormat; - -/** - * @author Eike Stepper - */ -public class CDOFeatureMapEntryImpl implements CDOFeatureMapEntry -{ - private EStructuralFeature feature; - - private Object value; - - public CDOFeatureMapEntryImpl() - { - } - - public CDOFeatureMapEntryImpl(EStructuralFeature feature, Object value) - { - this.feature = feature; - this.value = value; - } - - @Override - public EStructuralFeature getEStructuralFeature() - { - return feature; - } - - @Override - public void setEStructuralFeature(EStructuralFeature feature) - { - this.feature = feature; - } - - @Override - public Object getValue() - { - return value; - } - - @Override - public void setValue(Object value) - { - this.value = value; - } - - @Override - public String toString() - { - return MessageFormat.format("CDOFeatureMapEntry({0}, {1})", feature.getName(), value); //$NON-NLS-1$ - } -} diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOListFeatureDeltaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOListFeatureDeltaImpl.java index 39cf6e0b9a..8bd93805d1 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOListFeatureDeltaImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOListFeatureDeltaImpl.java @@ -31,7 +31,6 @@ import org.eclipse.net4j.util.collection.Pair; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.util.FeatureMapUtil; import java.io.IOException; import java.lang.reflect.Array; @@ -233,7 +232,7 @@ public class CDOListFeatureDeltaImpl extends CDOFeatureDeltaImpl implements CDOL { case REMOVE: { - if (feature instanceof EReference || FeatureMapUtil.isFeatureMap(feature)) + if (feature instanceof EReference) { Boolean result = cleanupWithNewRemoveDelta((CDORemoveFeatureDelta)featureDelta); if (result != null) diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSingleValueFeatureDeltaImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSingleValueFeatureDeltaImpl.java index 9a4c8ef6a1..871e5e3b5c 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSingleValueFeatureDeltaImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/internal/common/revision/delta/CDOSingleValueFeatureDeltaImpl.java @@ -15,7 +15,6 @@ import org.eclipse.emf.cdo.common.id.CDOID; import org.eclipse.emf.cdo.common.protocol.CDODataInput; import org.eclipse.emf.cdo.common.protocol.CDODataOutput; import org.eclipse.emf.cdo.common.revision.CDORevisionData; -import org.eclipse.emf.cdo.common.revision.CDORevisionUtil; import org.eclipse.emf.cdo.spi.common.revision.CDOReferenceAdjuster; import org.eclipse.emf.cdo.spi.common.revision.InternalCDOFeatureDelta.WithIndex; @@ -25,8 +24,6 @@ import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.util.FeatureMap; -import org.eclipse.emf.ecore.util.FeatureMapUtil; import java.io.IOException; import java.text.MessageFormat; @@ -76,16 +73,6 @@ public abstract class CDOSingleValueFeatureDeltaImpl extends CDOFeatureDeltaImpl } EStructuralFeature feature = getFeature(); - if (FeatureMapUtil.isFeatureMap(feature)) - { - FeatureMap.Entry entry = (FeatureMap.Entry)valueToWrite; - feature = entry.getEStructuralFeature(); - valueToWrite = entry.getValue(); - - int featureID = eClass.getFeatureID(feature); - out.writeXInt(featureID); - } - if (valueToWrite != null && valueToWrite != CDORevisionData.NIL && feature instanceof EReference) { valueToWrite = out.getIDProvider().provideCDOID(value); @@ -97,14 +84,6 @@ public abstract class CDOSingleValueFeatureDeltaImpl extends CDOFeatureDeltaImpl protected Object readValue(CDODataInput in, EClass eClass) throws IOException { EStructuralFeature feature = getFeature(); - if (FeatureMapUtil.isFeatureMap(feature)) - { - int featureID = in.readXInt(); - feature = eClass.getEStructuralFeature(featureID); - Object innerValue = in.readCDOFeatureValue(feature); - return CDORevisionUtil.createFeatureMapEntry(feature, innerValue); - } - return in.readCDOFeatureValue(feature); } 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 3bd52a7036..51160f3cbc 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 @@ -86,18 +86,12 @@ import org.eclipse.net4j.util.io.ExtendedDataInput; import org.eclipse.net4j.util.io.StringIO; import org.eclipse.net4j.util.om.trace.ContextTracer; -import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EClassifier; -import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.EcoreFactory; -import org.eclipse.emf.ecore.EcorePackage; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; -import org.eclipse.emf.ecore.util.FeatureMapUtil; -import org.eclipse.emf.ecore.xml.type.XMLTypePackage; import java.io.IOException; import java.text.MessageFormat; @@ -532,13 +526,7 @@ public abstract class CDODataInputImpl extends ExtendedDataInput.Delegating impl } } - Object value = null; - CDOType type = null; - boolean isFeatureMap = FeatureMapUtil.isFeatureMap(feature); - if (!isFeatureMap) - { - type = CDOModelUtil.getType(feature.getEType()); - } + CDOType type = CDOModelUtil.getType(feature.getEType()); InternalCDOList list = (InternalCDOList)getListFactory().createList(size, size, referenceChunk); if (feature instanceof EReference && list instanceof ConfigurableEquality) @@ -548,64 +536,9 @@ public abstract class CDODataInputImpl extends ExtendedDataInput.Delegating impl for (int j = 0; j < referenceChunk; j++) { - if (isFeatureMap) - { - EStructuralFeature innerFeature; - - boolean demandCreated = readBoolean(); - if (demandCreated) - { - EPackage ePackage = EcoreFactory.eINSTANCE.createEPackage(); - ePackage.setNsURI(readString()); - - EClass eClass = EcoreFactory.eINSTANCE.createEClass(); - eClass.setName(readString()); - ePackage.getEClassifiers().add(eClass); - - if (readBoolean()) - { - EReference eReference = EcoreFactory.eINSTANCE.createEReference(); - eReference.setEType(EcorePackage.Literals.EOBJECT); - // if (isElement) - // { - // eReference.setContainment(true); - // eReference.setResolveProxies(false); - // } - innerFeature = eReference; - } - else - { - EAttribute eAttribute = EcoreFactory.eINSTANCE.createEAttribute(); - eAttribute.setEType(XMLTypePackage.eINSTANCE.getAnySimpleType()); - innerFeature = eAttribute; - } - - innerFeature.setName(readString()); - innerFeature.setDerived(true); - innerFeature.setTransient(true); - innerFeature.setVolatile(true); - // if (isElement) - // { - // innerFeature.setUpperBound(ETypedElement.UNSPECIFIED_MULTIPLICITY); - // } - eClass.getEStructuralFeatures().add(innerFeature); - } - else - { - EClass eClass = (EClass)readCDOClassifierRefAndResolve(); - innerFeature = eClass.getEStructuralFeature(readXInt()); - } - - type = CDOModelUtil.getType(innerFeature.getEType()); - value = type.readValue(this); - value = CDORevisionUtil.createFeatureMapEntry(innerFeature, value); - } - else - { - value = type.readValue(this); - } - + Object value = type.readValue(this); list.set(j, value); + if (TRACER.isEnabled()) { TRACER.trace(" " + value); //$NON-NLS-1$ @@ -619,6 +552,7 @@ public abstract class CDODataInputImpl extends ExtendedDataInput.Delegating impl public Object readCDOFeatureValue(EStructuralFeature feature) throws IOException { CDOType type = CDOModelUtil.getType(feature); + Object value = type.readValue(this); if (value instanceof CDOLob<?>) { diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/protocol/CDODataOutputImpl.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/protocol/CDODataOutputImpl.java index 8fce04e48e..bc3c368297 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/protocol/CDODataOutputImpl.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/protocol/CDODataOutputImpl.java @@ -61,11 +61,8 @@ import org.eclipse.net4j.util.om.trace.ContextTracer; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EClassifier; import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.util.FeatureMap; -import org.eclipse.emf.ecore.util.FeatureMapUtil; import java.io.IOException; import java.text.MessageFormat; @@ -499,39 +496,11 @@ public class CDODataOutputImpl extends ExtendedDataOutput.Delegating implements } CDOIDProvider idProvider = getIDProvider(); - boolean isFeatureMap = FeatureMapUtil.isFeatureMap(feature); + for (int j = 0; j < size; j++) { Object value = list.get(j, false); - EStructuralFeature innerFeature = feature; // Prepare for possible feature map - if (isFeatureMap) - { - FeatureMap.Entry entry = (FeatureMap.Entry)value; - innerFeature = entry.getEStructuralFeature(); - value = entry.getValue(); - - EClass eClass = innerFeature.getEContainingClass(); - EPackage ePackage = eClass.getEPackage(); - if (ePackage.getName() == null) - { - // Probably a demand-created DocumentRoot feature - writeBoolean(true); - writeString(ePackage.getNsURI()); - writeString(eClass.getName()); - writeBoolean(innerFeature instanceof EReference); - writeString(innerFeature.getName()); - } - else - { - writeBoolean(false); - writeCDOClassifierRef(eClass); - - int featureID = eClass.getFeatureID(innerFeature); - writeXInt(featureID); - } - } - - if (value != null && innerFeature instanceof EReference) + if (value != null && feature instanceof EReference) { value = idProvider.provideCDOID(value); } @@ -541,7 +510,7 @@ public class CDODataOutputImpl extends ExtendedDataOutput.Delegating implements TRACER.trace(" " + value); //$NON-NLS-1$ } - writeCDOFeatureValue(innerFeature, value); + writeCDOFeatureValue(feature, value); } } diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/BaseCDORevision.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/BaseCDORevision.java index a86907bb1c..c5c2b8033b 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/BaseCDORevision.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/BaseCDORevision.java @@ -53,9 +53,6 @@ import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EClassifier; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.util.FeatureMap; -import org.eclipse.emf.ecore.util.FeatureMap.Entry; -import org.eclipse.emf.ecore.util.FeatureMapUtil; import java.io.IOException; import java.lang.reflect.Array; @@ -429,7 +426,6 @@ public abstract class BaseCDORevision extends AbstractCDORevision } else { - checkNoFeatureMap(feature); if (feature instanceof EReference) { value = out.getIDProvider().provideCDOID(value); @@ -465,17 +461,10 @@ public abstract class BaseCDORevision extends AbstractCDORevision CDOList list = getValueAsList(i); if (list != null) { - boolean isFeatureMap = FeatureMapUtil.isFeatureMap(feature); for (int j = 0; j < list.size(); j++) { Object value = list.get(j, false); EStructuralFeature innerFeature = feature; // Prepare for possible feature map - if (isFeatureMap) - { - Entry entry = (FeatureMap.Entry)value; - innerFeature = entry.getEStructuralFeature(); - value = entry.getValue(); - } if (value != null && innerFeature instanceof EReference) { @@ -490,7 +479,6 @@ public abstract class BaseCDORevision extends AbstractCDORevision } else { - checkNoFeatureMap(feature); Object value = getValue(i); if (value != null && feature instanceof EReference) { @@ -878,7 +866,7 @@ public abstract class BaseCDORevision extends AbstractCDORevision for (int i = 0; i < features.length; i++) { EStructuralFeature feature = features[i]; - if (feature instanceof EReference || FeatureMapUtil.isFeatureMap(feature)) + if (feature instanceof EReference) { if (feature.isMany()) { @@ -1230,12 +1218,13 @@ public abstract class BaseCDORevision extends AbstractCDORevision } } + /** + * @deprecated As of 4.5 {@link org.eclipse.emf.ecore.util.FeatureMap feature maps} are no longer supported. + */ + @Deprecated public static void checkNoFeatureMap(EStructuralFeature feature) { - if (FeatureMapUtil.isFeatureMap(feature)) - { - throw new UnsupportedOperationException("Single-valued feature maps not yet handled"); - } + throw new UnsupportedOperationException(); } public static Object remapID(Object value, Map<CDOID, CDOID> idMappings, boolean allowUnmappedTempIDs) diff --git a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/CDOFeatureMapEntry.java b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/CDOFeatureMapEntry.java index b7498231ec..e4a5de0943 100644 --- a/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/CDOFeatureMapEntry.java +++ b/plugins/org.eclipse.emf.cdo.common/src/org/eclipse/emf/cdo/spi/common/revision/CDOFeatureMapEntry.java @@ -11,15 +11,16 @@ package org.eclipse.emf.cdo.spi.common.revision; import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.util.FeatureMap; /** * If the meaning of this type isn't clear, there really should be more of a description here... * * @since 3.0 + * @deprecated As of 4.5 {@link org.eclipse.emf.ecore.util.FeatureMap feature maps} are no longer supported. * @author Martin Taal */ -public interface CDOFeatureMapEntry extends FeatureMap.Entry +@Deprecated +public interface CDOFeatureMapEntry extends org.eclipse.emf.ecore.util.FeatureMap.Entry { public void setEStructuralFeature(EStructuralFeature feature); |