Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcbrun2015-09-29 14:47:52 +0000
committerLaurent Redor2015-09-30 11:37:20 +0000
commit0e233f42b9d417fb22366595d320bf4745ce1a1f (patch)
tree50b0aaf40ed860ecfce1ad260aa99eb89e1388a5
parentc139d2369b14c75070524753c914672ef9a435bd (diff)
downloadorg.eclipse.sirius-0e233f42b9d417fb22366595d320bf4745ce1a1f.tar.gz
org.eclipse.sirius-0e233f42b9d417fb22366595d320bf4745ce1a1f.tar.xz
org.eclipse.sirius-0e233f42b9d417fb22366595d320bf4745ce1a1f.zip
[470599]Revert "Use an index for xRefs Setting to pick addUnique faster"
This reverts commit 1495c2d9258553dfa6564bcfe1597f112bb1aab1 to get back to the original state before applying the fix proposed in the EMF project. Bug: 470599 Change-Id: I070a2a81e5f5d8dc2eda8384f2c8f595c8fea5dc Signed-off-by: Cedric Brun <cedric.brun@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.common/src/org/eclipse/sirius/common/tools/api/util/ECrossReferenceAdapterWithUnproxyCapability.java8
-rw-r--r--plugins/org.eclipse.sirius.common/src/org/eclipse/sirius/common/tools/api/util/SiriusCrossReferenceAdapterImpl.java14
-rw-r--r--plugins/org.eclipse.sirius.common/src/org/eclipse/sirius/common/tools/internal/ecore/IndexedSettingsEList.java129
-rw-r--r--plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/session/danalysis/LocalResourceCollector.java6
4 files changed, 0 insertions, 157 deletions
diff --git a/plugins/org.eclipse.sirius.common/src/org/eclipse/sirius/common/tools/api/util/ECrossReferenceAdapterWithUnproxyCapability.java b/plugins/org.eclipse.sirius.common/src/org/eclipse/sirius/common/tools/api/util/ECrossReferenceAdapterWithUnproxyCapability.java
index 093ecce139..749dbe3311 100644
--- a/plugins/org.eclipse.sirius.common/src/org/eclipse/sirius/common/tools/api/util/ECrossReferenceAdapterWithUnproxyCapability.java
+++ b/plugins/org.eclipse.sirius.common/src/org/eclipse/sirius/common/tools/api/util/ECrossReferenceAdapterWithUnproxyCapability.java
@@ -10,7 +10,6 @@
*******************************************************************************/
package org.eclipse.sirius.common.tools.api.util;
-import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -18,11 +17,9 @@ import java.util.Map;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.EStructuralFeature.Setting;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.sirius.common.tools.internal.ecore.IndexedSettingsEList;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
@@ -91,11 +88,6 @@ public class ECrossReferenceAdapterWithUnproxyCapability extends SiriusCrossRefe
}
return result;
}
-
- @Override
- protected Collection<Setting> newCollection() {
- return new IndexedSettingsEList();
- }
}
/**
diff --git a/plugins/org.eclipse.sirius.common/src/org/eclipse/sirius/common/tools/api/util/SiriusCrossReferenceAdapterImpl.java b/plugins/org.eclipse.sirius.common/src/org/eclipse/sirius/common/tools/api/util/SiriusCrossReferenceAdapterImpl.java
index a8b3697aca..2d22b99f22 100644
--- a/plugins/org.eclipse.sirius.common/src/org/eclipse/sirius/common/tools/api/util/SiriusCrossReferenceAdapterImpl.java
+++ b/plugins/org.eclipse.sirius.common/src/org/eclipse/sirius/common/tools/api/util/SiriusCrossReferenceAdapterImpl.java
@@ -10,11 +10,7 @@
*******************************************************************************/
package org.eclipse.sirius.common.tools.api.util;
-import java.util.Collection;
-
-import org.eclipse.emf.ecore.EStructuralFeature.Setting;
import org.eclipse.emf.ecore.util.ECrossReferenceAdapter;
-import org.eclipse.sirius.common.tools.internal.ecore.IndexedSettingsEList;
/**
* Specific {@link ECrossReferenceAdapter} which resolve proxy ability can be
@@ -53,14 +49,4 @@ public class SiriusCrossReferenceAdapterImpl extends ECrossReferenceAdapter impl
}
return false;
}
-
- @Override
- protected InverseCrossReferencer createInverseCrossReferencer() {
- return new InverseCrossReferencer() {
- @Override
- protected Collection<Setting> newCollection() {
- return new IndexedSettingsEList();
- }
- };
- }
}
diff --git a/plugins/org.eclipse.sirius.common/src/org/eclipse/sirius/common/tools/internal/ecore/IndexedSettingsEList.java b/plugins/org.eclipse.sirius.common/src/org/eclipse/sirius/common/tools/internal/ecore/IndexedSettingsEList.java
deleted file mode 100644
index 637024801a..0000000000
--- a/plugins/org.eclipse.sirius.common/src/org/eclipse/sirius/common/tools/internal/ecore/IndexedSettingsEList.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2015 Obeo
- * 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:
- * Obeo - initial API and implementation
- *******************************************************************************/
-package org.eclipse.sirius.common.tools.internal.ecore;
-
-import java.util.BitSet;
-import java.util.Map;
-
-import org.eclipse.emf.common.util.BasicEList;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.EStructuralFeature.Setting;
-
-import com.google.common.collect.Maps;
-
-/**
- * A specialization of BasicEList<Setting> which speed up the
- * addition in the list by using a index to quickly determine if addUnique() can
- * be used.
- *
- * @author cedric
- *
- */
-public class IndexedSettingsEList extends BasicEList<Setting> {
-
- private static final long serialVersionUID = 1L;
-
- /*
- * Number of Setting beyond which we trigger the creation
- * of the knowns bitsets to speed up lookups when adding a new setting.
- */
- private static final int KNOWNS_MAP_THRESHOLD = 500;
-
- /*
- * Map of bitset used to speed up containment checks, for a given EObject
- * and EStructuralFeature ID (used as the bitset key) we know if the feature
- * is already known or not faster instead of having to iterate over all the
- * Settings in the data field. This map is only created
- * when the size of the list hits a fixed threshold as to avoid a
- * prohibitive heap memory usage for a small speedup.
- */
- private Map<EObject, BitSet> knowns;
-
- @Override
- protected Object[] newData(int capacity) {
- return new Setting[capacity];
- }
-
- @Override
- public boolean add(Setting setting) {
- EObject eObject = setting.getEObject();
- if (knowns != null) {
- /*
- * if knowns is not null then the map can be used for lookups.
- */
- boolean isKnownFeature = isKnown(setting);
- boolean toBeAdded = true;
- if (isKnownFeature) {
- EStructuralFeature eStructuralFeature = setting.getEStructuralFeature();
- Setting[] settingData = (Setting[]) data;
- for (int i = 0; i < size; ++i) {
- Setting containedSetting = settingData[i];
- if (containedSetting.getEObject() == eObject && containedSetting.getEStructuralFeature() == eStructuralFeature) {
- toBeAdded = false;
- break;
- }
- }
- }
- if (toBeAdded) {
- addUnique(setting);
- }
- return toBeAdded;
- } else {
- return super.add(setting);
- }
- }
-
- private boolean isKnown(Setting setting) {
- BitSet knownFeaturesForThisEObject = knowns.get(setting.getEObject());
- if (knownFeaturesForThisEObject != null) {
- return knownFeaturesForThisEObject.get(setting.getEStructuralFeature().getFeatureID());
- }
- return false;
- }
-
- private void markAsKnown(Setting setting) {
- BitSet knownFeaturesForThisEObject = knowns.get(setting.getEObject());
- if (knownFeaturesForThisEObject == null) {
- knownFeaturesForThisEObject = new BitSet();
- knowns.put(setting.getEObject(), knownFeaturesForThisEObject);
- }
- knownFeaturesForThisEObject.set(setting.getEStructuralFeature().getFeatureID());
- }
-
- @Override
- protected Setting assign(int index, Setting setting) {
- if (knowns == null && size >= KNOWNS_MAP_THRESHOLD) {
- /*
- * init the knowns maps with the settings we already hold.
- */
- knowns = Maps.newHashMapWithExpectedSize(size);
- Setting[] settingData = (Setting[]) data;
- for (int i = 0; i < size; ++i) {
- Setting containedSetting = settingData[i];
- markAsKnown(containedSetting);
- }
- }
- if (setting != null && knowns != null && setting.getEObject() != null && setting.getEStructuralFeature() != null) {
- markAsKnown(setting);
- }
- return super.assign(index, setting);
- }
-
- @Override
- public void clear() {
- super.clear();
- if (knowns != null) {
- knowns.clear();
- }
- }
-
-}
diff --git a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/session/danalysis/LocalResourceCollector.java b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/session/danalysis/LocalResourceCollector.java
index 704e9205df..34c79b54f7 100644
--- a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/session/danalysis/LocalResourceCollector.java
+++ b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/session/danalysis/LocalResourceCollector.java
@@ -27,7 +27,6 @@ import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.sirius.business.api.query.ResourceQuery;
import org.eclipse.sirius.common.tools.api.util.SiriusCrossReferenceAdapterImpl;
-import org.eclipse.sirius.common.tools.internal.ecore.IndexedSettingsEList;
/**
* A {@link IResourceCollector} for local {@link Resource}.
@@ -226,11 +225,6 @@ public class LocalResourceCollector extends SiriusCrossReferenceAdapterImpl impl
}
}
- @Override
- protected Collection<EStructuralFeature.Setting> newCollection() {
- return new IndexedSettingsEList();
- }
-
}
}

Back to the top