Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.ecore.retrofit/src/org/eclipse/emf/ecore/impl/MinimalEStoreEObjectImpl.java')
-rw-r--r--plugins/org.eclipse.emf.cdo.ecore.retrofit/src/org/eclipse/emf/ecore/impl/MinimalEStoreEObjectImpl.java548
1 files changed, 252 insertions, 296 deletions
diff --git a/plugins/org.eclipse.emf.cdo.ecore.retrofit/src/org/eclipse/emf/ecore/impl/MinimalEStoreEObjectImpl.java b/plugins/org.eclipse.emf.cdo.ecore.retrofit/src/org/eclipse/emf/ecore/impl/MinimalEStoreEObjectImpl.java
index 1de7bfd566..f607f663b2 100644
--- a/plugins/org.eclipse.emf.cdo.ecore.retrofit/src/org/eclipse/emf/ecore/impl/MinimalEStoreEObjectImpl.java
+++ b/plugins/org.eclipse.emf.cdo.ecore.retrofit/src/org/eclipse/emf/ecore/impl/MinimalEStoreEObjectImpl.java
@@ -24,304 +24,260 @@ import org.eclipse.emf.ecore.util.EcoreEMap;
import org.eclipse.emf.ecore.util.FeatureMap;
import org.eclipse.emf.ecore.util.FeatureMapUtil;
-
/**
- * A minimal abstract implementation of '<em><b>EObject</b></em>' that delegates to a {@link org.eclipse.emf.ecore.InternalEObject.EStore store}.
- * It's extends {@link MinimalEObjectImpl} and does <b>not</b> introduce any additional fields.
- * Clients extending this class must specialize {@link #eStore()}.
+ * A minimal abstract implementation of '<em><b>EObject</b></em>' that delegates
+ * to a {@link org.eclipse.emf.ecore.InternalEObject.EStore store}. It's extends
+ * {@link MinimalEObjectImpl} and does <b>not</b> introduce any additional
+ * fields. Clients extending this class must specialize {@link #eStore()}.
+ *
* @since 2.9
*/
@SuppressWarnings("javadoc")
-public abstract class MinimalEStoreEObjectImpl extends MinimalEObjectImpl
-{
- private static final EObservableAdapterList.Listener ADAPTERS_LISTENER = new EObservableAdapterList.Listener()
- {
- public void added(Notifier notifier, Adapter adapter)
- {
- MinimalEStoreEObjectImpl object = (MinimalEStoreEObjectImpl) notifier;
- object.eAdapterAdded(adapter);
- }
-
- public void removed(Notifier notifier, Adapter adapter)
- {
- MinimalEStoreEObjectImpl object = (MinimalEStoreEObjectImpl) notifier;
- object.eAdapterRemoved(adapter);
- }
- };
-
- /**
- * Creates a store-based EObject.
- */
- public MinimalEStoreEObjectImpl()
- {
- super();
- }
-
- /**
- * Creates a store-based EObject.
- */
- public MinimalEStoreEObjectImpl(EClass eClass)
- {
- super();
- eSetClass(eClass);
- }
-
- @Override
- public abstract InternalEObject.EStore eStore();
-
- protected boolean eIsCaching()
- {
- return true;
- }
-
- @Override
-Object[] eDynamicSettings()
- {
- Object[] settings = eBasicSettings();
- if (settings == null)
- {
- eSettings();
- settings = eBasicSettings();
- }
- return settings;
- }
-
- @Override
- public Object dynamicGet(int dynamicFeatureID)
- {
- Object[] eSettings = eDynamicSettings();
- Object result = eSettings[dynamicFeatureID];
- if (result == null)
- {
- EStructuralFeature eStructuralFeature = eDynamicFeature(dynamicFeatureID);
- if (!eStructuralFeature.isTransient())
- {
- if (FeatureMapUtil.isFeatureMap(eStructuralFeature))
- {
- eSettings[dynamicFeatureID] = result = createFeatureMap(eStructuralFeature);
- }
- else if (eStructuralFeature.isMany())
- {
- eSettings[dynamicFeatureID] = result = createList(eStructuralFeature);
- }
- else
- {
- result = eStore().get(this, eStructuralFeature, InternalEObject.EStore.NO_INDEX);
- if (eIsCaching())
- {
- eSettings[dynamicFeatureID] = result;
- }
- }
- }
- }
- return result;
- }
-
- @Override
- public void dynamicSet(int dynamicFeatureID, Object value)
- {
- Object[] eSettings = eDynamicSettings();
- EStructuralFeature eStructuralFeature = eDynamicFeature(dynamicFeatureID);
- if (eStructuralFeature.isTransient())
- {
- eSettings[dynamicFeatureID] = value;
- }
- else
- {
- eStore().set(this, eStructuralFeature, InternalEObject.EStore.NO_INDEX, value);
- if (eIsCaching())
- {
- eSettings[dynamicFeatureID] = value;
- }
- }
- }
-
- @Override
- public void dynamicUnset(int dynamicFeatureID)
- {
- Object[] eSettings = eDynamicSettings();
- EStructuralFeature eStructuralFeature = eDynamicFeature(dynamicFeatureID);
- if (eStructuralFeature.isTransient())
- {
- eSettings[dynamicFeatureID] = null;
- }
- else
- {
- eStore().unset(this, eStructuralFeature);
- eSettings[dynamicFeatureID] = null;
- }
- }
-
- @Override
- protected boolean eDynamicIsSet(int dynamicFeatureID, EStructuralFeature eFeature)
- {
- return dynamicFeatureID < 0 ? eOpenIsSet(eFeature) : eFeature.isTransient() ? eSettingDelegate(eFeature).dynamicIsSet(this, eSettings(), dynamicFeatureID)
- : eStore().isSet(this, eFeature);
- }
-
- @SuppressWarnings("nls")
- protected EList<?> createList(final EStructuralFeature eStructuralFeature)
- {
- final EClassifier eType = eStructuralFeature.getEType();
- if (eType.getInstanceClassName() == "java.util.Map$Entry")
- {
- class EStoreEcoreEMap extends EcoreEMap<Object, Object>
- {
- private static final long serialVersionUID = 1L;
-
- public EStoreEcoreEMap()
- {
- super((EClass) eType, BasicEMap.Entry.class, null);
- delegateEList = new EStoreEObjectImpl.BasicEStoreEList<BasicEMap.Entry<Object, Object>>(MinimalEStoreEObjectImpl.this, eStructuralFeature)
- {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void didAdd(int index, BasicEMap.Entry<Object, Object> newObject)
- {
- EStoreEcoreEMap.this.doPut(newObject);
- }
-
- @Override
- protected void didSet(int index, BasicEMap.Entry<Object, Object> newObject, BasicEMap.Entry<Object, Object> oldObject)
- {
- didRemove(index, oldObject);
- didAdd(index, newObject);
- }
-
- @Override
- protected void didRemove(int index, BasicEMap.Entry<Object, Object> oldObject)
- {
- EStoreEcoreEMap.this.doRemove(oldObject);
- }
-
- @Override
- protected void didClear(int size, Object[] oldObjects)
- {
- EStoreEcoreEMap.this.doClear();
- }
-
- @Override
- protected void didMove(int index, BasicEMap.Entry<Object, Object> movedObject, int oldIndex)
- {
- EStoreEcoreEMap.this.doMove(movedObject);
- }
- };
- size = delegateEList.size();
- }
- }
- return new EStoreEcoreEMap();
- }
- return new EStoreEObjectImpl.BasicEStoreEList<Object>(this, eStructuralFeature);
- }
-
- protected FeatureMap createFeatureMap(EStructuralFeature eStructuralFeature)
- {
- return new EStoreEObjectImpl.EStoreFeatureMap(this, eStructuralFeature, eStore());
- }
-
- /**
- * Returns the container as cached by {@link MinimalEObjectImpl#eInternalContainer()}.
- */
- protected InternalEObject eBasicInternalContainer()
- {
- return super.eInternalContainer();
- }
-
- /**
- * Returns the container as {@link InternalEObject.EStore#getContainer(InternalEObject) provided} by the store.
- */
- @Override
- public InternalEObject eInternalContainer()
- {
- return eStore().getContainer(this);
- }
-
- /**
- * Returns the container feature ID as cached by {@link MinimalEObjectImpl#eContainerFeatureID()}.
- */
- protected int eBasicContainerFeatureID()
- {
- return super.eContainerFeatureID();
- }
-
- /**
- * Returns the container feature ID as computed from the container feature {@link InternalEObject.EStore#getContainingFeature(InternalEObject) provided} by the store.
- */
- @Override
- public int eContainerFeatureID()
- {
- EObject eContainer = eInternalContainer();
- if (eContainer != null)
- {
- EStructuralFeature eContainingFeature = eStore().getContainingFeature(this);
- if (eContainingFeature instanceof EReference)
- {
- EReference eContainingReference = (EReference) eContainingFeature;
- EReference eOpposite = eContainingReference.getEOpposite();
- if (eOpposite != null)
- {
- return eClass().getFeatureID(eOpposite);
- }
- }
-
- return EOPPOSITE_FEATURE_BASE - eContainer.eClass().getFeatureID(eContainingFeature);
- }
-
- return 0;
- }
-
- @Override
- protected int eStaticFeatureCount()
- {
- return 0;
- }
-
- @Override
- public int eDerivedStructuralFeatureID(EStructuralFeature eStructuralFeature)
- {
- return eClass().getFeatureID(eStructuralFeature);
- }
-
- @Override
- protected void eBasicSetAdapterArray(Adapter[] adapters)
- {
- Adapter[] oldAdapters = eBasicAdapterArray();
- if (adapters == null || adapters.length == 0)
- {
- adapters = null;// Optimize possibly empty array
- if (oldAdapters != null) // Can't be empty array because of the optimization above
- {
- ((EObservableAdapterList) eAdapters()).removeListener(ADAPTERS_LISTENER);
- }
- }
- else
- {
- if (oldAdapters == null) // Can't be empty array because of the optimization above
- {
- ((EObservableAdapterList) eAdapters()).addListener(ADAPTERS_LISTENER);
- }
- }
- super.eBasicSetAdapterArray(adapters);
- }
-
- @Override
-protected EObservableAdapterList.Listener[] eBasicAdapterListeners()
- {
- throw new UnsupportedOperationException();
- }
-
- @Override
-protected void eBasicSetAdapterListeners(EObservableAdapterList.Listener[] eAdapterListeners)
- {
- throw new UnsupportedOperationException();
- }
-
- protected void eAdapterAdded(Adapter adapter)
- {
- }
-
- protected void eAdapterRemoved(Adapter adapter)
- {
- }
+public abstract class MinimalEStoreEObjectImpl extends MinimalEObjectImpl {
+ private static final EObservableAdapterList.Listener ADAPTERS_LISTENER = new EObservableAdapterList.Listener() {
+ public void added(Notifier notifier, Adapter adapter) {
+ MinimalEStoreEObjectImpl object = (MinimalEStoreEObjectImpl) notifier;
+ object.eAdapterAdded(adapter);
+ }
+
+ public void removed(Notifier notifier, Adapter adapter) {
+ MinimalEStoreEObjectImpl object = (MinimalEStoreEObjectImpl) notifier;
+ object.eAdapterRemoved(adapter);
+ }
+ };
+
+ /**
+ * Creates a store-based EObject.
+ */
+ public MinimalEStoreEObjectImpl() {
+ super();
+ }
+
+ /**
+ * Creates a store-based EObject.
+ */
+ public MinimalEStoreEObjectImpl(EClass eClass) {
+ super();
+ eSetClass(eClass);
+ }
+
+ @Override
+ public abstract InternalEObject.EStore eStore();
+
+ protected boolean eIsCaching() {
+ return true;
+ }
+
+ @Override
+ Object[] eDynamicSettings() {
+ Object[] settings = eBasicSettings();
+ if (settings == null) {
+ eSettings();
+ settings = eBasicSettings();
+ }
+ return settings;
+ }
+
+ @Override
+ public Object dynamicGet(int dynamicFeatureID) {
+ Object[] eSettings = eDynamicSettings();
+ Object result = eSettings[dynamicFeatureID];
+ if (result == null) {
+ EStructuralFeature eStructuralFeature = eDynamicFeature(dynamicFeatureID);
+ if (!eStructuralFeature.isTransient()) {
+ if (FeatureMapUtil.isFeatureMap(eStructuralFeature)) {
+ eSettings[dynamicFeatureID] = result = createFeatureMap(eStructuralFeature);
+ } else if (eStructuralFeature.isMany()) {
+ eSettings[dynamicFeatureID] = result = createList(eStructuralFeature);
+ } else {
+ result = eStore().get(this, eStructuralFeature, InternalEObject.EStore.NO_INDEX);
+ if (eIsCaching()) {
+ eSettings[dynamicFeatureID] = result;
+ }
+ }
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public void dynamicSet(int dynamicFeatureID, Object value) {
+ Object[] eSettings = eDynamicSettings();
+ EStructuralFeature eStructuralFeature = eDynamicFeature(dynamicFeatureID);
+ if (eStructuralFeature.isTransient()) {
+ eSettings[dynamicFeatureID] = value;
+ } else {
+ eStore().set(this, eStructuralFeature, InternalEObject.EStore.NO_INDEX, value);
+ if (eIsCaching()) {
+ eSettings[dynamicFeatureID] = value;
+ }
+ }
+ }
+
+ @Override
+ public void dynamicUnset(int dynamicFeatureID) {
+ Object[] eSettings = eDynamicSettings();
+ EStructuralFeature eStructuralFeature = eDynamicFeature(dynamicFeatureID);
+ if (eStructuralFeature.isTransient()) {
+ eSettings[dynamicFeatureID] = null;
+ } else {
+ eStore().unset(this, eStructuralFeature);
+ eSettings[dynamicFeatureID] = null;
+ }
+ }
+
+ @Override
+ protected boolean eDynamicIsSet(int dynamicFeatureID, EStructuralFeature eFeature) {
+ return dynamicFeatureID < 0 ? eOpenIsSet(eFeature)
+ : eFeature.isTransient() ? eSettingDelegate(eFeature).dynamicIsSet(this, eSettings(), dynamicFeatureID)
+ : eStore().isSet(this, eFeature);
+ }
+
+ @SuppressWarnings("nls")
+ protected EList<?> createList(final EStructuralFeature eStructuralFeature) {
+ final EClassifier eType = eStructuralFeature.getEType();
+ if (eType.getInstanceClassName() == "java.util.Map$Entry") {
+ class EStoreEcoreEMap extends EcoreEMap<Object, Object> {
+ private static final long serialVersionUID = 1L;
+
+ public EStoreEcoreEMap() {
+ super((EClass) eType, BasicEMap.Entry.class, null);
+ delegateEList = new EStoreEObjectImpl.BasicEStoreEList<BasicEMap.Entry<Object, Object>>(
+ MinimalEStoreEObjectImpl.this, eStructuralFeature) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void didAdd(int index, BasicEMap.Entry<Object, Object> newObject) {
+ EStoreEcoreEMap.this.doPut(newObject);
+ }
+
+ @Override
+ protected void didSet(int index, BasicEMap.Entry<Object, Object> newObject,
+ BasicEMap.Entry<Object, Object> oldObject) {
+ didRemove(index, oldObject);
+ didAdd(index, newObject);
+ }
+
+ @Override
+ protected void didRemove(int index, BasicEMap.Entry<Object, Object> oldObject) {
+ EStoreEcoreEMap.this.doRemove(oldObject);
+ }
+
+ @Override
+ protected void didClear(int size, Object[] oldObjects) {
+ EStoreEcoreEMap.this.doClear();
+ }
+
+ @Override
+ protected void didMove(int index, BasicEMap.Entry<Object, Object> movedObject, int oldIndex) {
+ EStoreEcoreEMap.this.doMove(movedObject);
+ }
+ };
+ size = delegateEList.size();
+ }
+ }
+ return new EStoreEcoreEMap();
+ }
+ return new EStoreEObjectImpl.BasicEStoreEList<Object>(this, eStructuralFeature);
+ }
+
+ protected FeatureMap createFeatureMap(EStructuralFeature eStructuralFeature) {
+ return new EStoreEObjectImpl.EStoreFeatureMap(this, eStructuralFeature, eStore());
+ }
+
+ /**
+ * Returns the container as cached by
+ * {@link MinimalEObjectImpl#eInternalContainer()}.
+ */
+ protected InternalEObject eBasicInternalContainer() {
+ return super.eInternalContainer();
+ }
+
+ /**
+ * Returns the container as
+ * {@link InternalEObject.EStore#getContainer(InternalEObject) provided} by
+ * the store.
+ */
+ @Override
+ public InternalEObject eInternalContainer() {
+ return eStore().getContainer(this);
+ }
+
+ /**
+ * Returns the container feature ID as cached by
+ * {@link MinimalEObjectImpl#eContainerFeatureID()}.
+ */
+ protected int eBasicContainerFeatureID() {
+ return super.eContainerFeatureID();
+ }
+
+ /**
+ * Returns the container feature ID as computed from the container feature
+ * {@link InternalEObject.EStore#getContainingFeature(InternalEObject)
+ * provided} by the store.
+ */
+ @Override
+ public int eContainerFeatureID() {
+ EObject eContainer = eInternalContainer();
+ if (eContainer != null) {
+ EStructuralFeature eContainingFeature = eStore().getContainingFeature(this);
+ if (eContainingFeature instanceof EReference) {
+ EReference eContainingReference = (EReference) eContainingFeature;
+ EReference eOpposite = eContainingReference.getEOpposite();
+ if (eOpposite != null) {
+ return eClass().getFeatureID(eOpposite);
+ }
+ }
+
+ return EOPPOSITE_FEATURE_BASE - eContainer.eClass().getFeatureID(eContainingFeature);
+ }
+
+ return 0;
+ }
+
+ @Override
+ protected int eStaticFeatureCount() {
+ return 0;
+ }
+
+ @Override
+ public int eDerivedStructuralFeatureID(EStructuralFeature eStructuralFeature) {
+ return eClass().getFeatureID(eStructuralFeature);
+ }
+
+ @Override
+ protected void eBasicSetAdapterArray(Adapter[] adapters) {
+ Adapter[] oldAdapters = eBasicAdapterArray();
+ if (adapters == null || adapters.length == 0) {
+ adapters = null;// Optimize possibly empty array
+ if (oldAdapters != null) // Can't be empty array because of the
+ // optimization above
+ {
+ ((EObservableAdapterList) eAdapters()).removeListener(ADAPTERS_LISTENER);
+ }
+ } else {
+ if (oldAdapters == null) // Can't be empty array because of the
+ // optimization above
+ {
+ ((EObservableAdapterList) eAdapters()).addListener(ADAPTERS_LISTENER);
+ }
+ }
+ super.eBasicSetAdapterArray(adapters);
+ }
+
+ @Override
+ protected EObservableAdapterList.Listener[] eBasicAdapterListeners() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ protected void eBasicSetAdapterListeners(EObservableAdapterList.Listener[] eAdapterListeners) {
+ throw new UnsupportedOperationException();
+ }
+
+ protected void eAdapterAdded(Adapter adapter) {
+ }
+
+ protected void eAdapterRemoved(Adapter adapter) {
+ }
}

Back to the top