[579165] IndexOutOfBoundsException in CDOObjectImpl.forAllMapAttributes()

https://bugs.eclipse.org/bugs/show_bug.cgi?id=579165
diff --git a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java
index 993b59e..34ac312 100644
--- a/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java
+++ b/plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java
@@ -459,13 +459,15 @@
     if (eSettings != null)
     {
       InternalCDOClassInfo classInfo = cdoClassInfo();
+      EClass eClass = classInfo.getEClass();
+
       EStructuralFeature[] persistentMapFeatures = classInfo.getAllPersistentMapFeatures();
       int length = persistentMapFeatures.length;
 
       for (int i = 0; i < length; i++)
       {
         EStructuralFeature feature = persistentMapFeatures[i];
-        int featureID = feature.getFeatureID();
+        int featureID = eClass.getFeatureID(feature);
         int index = classInfo.getSettingsFeatureIndex(featureID);
 
         CDOStoreEcoreEMap map = (CDOStoreEcoreEMap)eSettings[index];