/** * {@inheritDoc} * <p> * Returns the container of this {@link PersistentEObject}. * <p> * Do not return the same value as standard EMF implementation if the container has not been accessed with the * public method {@link #eContainer()} before. * * @return the container of this object. */ @Override public InternalEObject eInternalContainer() { // Do not load the container from the store here: it creates an important overhead and performance loss return isNull(eContainer) ? super.eInternalContainer() : eContainer; }
@Override public int eDerivedStructuralFeatureID(EStructuralFeature eStructuralFeature) { return eClass().getFeatureID(eStructuralFeature); } }
@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 protected boolean eDynamicIsSet(int dynamicFeatureID, EStructuralFeature eFeature) { return dynamicFeatureID < 0 ? eOpenIsSet(eFeature) : eFeature.isTransient() ? eSettingDelegate(eFeature).dynamicIsSet(this, eSettings(), dynamicFeatureID) : eStore().isSet(this, eFeature); }
@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 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; }
/** * Returns the container feature ID as computed from the container feature {@link org.eclipse.emf.ecore.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 public void eSetDirectResource(@Nullable Resource.Internal resource) { resource(resource); super.eSetDirectResource(resource); }
@Override protected EList<?> createList(EStructuralFeature eStructuralFeature) { if (isMap(eStructuralFeature)) { return createMap(eStructuralFeature); } if (!eStructuralFeature.isOrdered()) { return createUnorderedList(eStructuralFeature); } return super.createList(eStructuralFeature); }
/** * Creates a store-based EObject. */ public MinimalEStoreEObjectImpl(EClass eClass) { super(); eSetClass(eClass); }
@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 protected boolean eDynamicIsSet(int dynamicFeatureID, EStructuralFeature eFeature) { return dynamicFeatureID < 0 ? eOpenIsSet(eFeature) : eFeature.isTransient() ? eSettingDelegate(eFeature).dynamicIsSet(this, eSettings(), dynamicFeatureID) : eStore().isSet(this, eFeature); }
/** * 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 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; } }
public final void cdoInternalSetResource(CDOResource resource) { // Unsets direct resource and/or eContainer. // Only intended to be called by CDOTransactionImpl.removeObject(CDOID, CDOObject). // See bug 383370. if (resource != null) { throw new IllegalArgumentException( "Only intended to be called by CDOTransactionImpl.removeObject(CDOID, CDOObject"); } super.eSetDirectResource(null); eBasicSetContainer(null); eBasicSetContainerFeatureID(0); }
/** * Creates a store-based EObject. */ public MinimalEStoreEObjectImpl(EClass eClass) { super(); eSetClass(eClass); }
@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 protected final void eSetDirectResource(Internal resource) { if (FSMUtil.isTransient(this)) { super.eSetDirectResource(resource); } else if (resource == null || resource instanceof CDOResource) { cdoStore().setContainer(this, (CDOResource)resource, eInternalContainer(), eContainerFeatureID()); } else { throw new IllegalArgumentException(Messages.getString("CDOObjectImpl.8")); //$NON-NLS-1$ } }
@Override public int eDerivedStructuralFeatureID(EStructuralFeature eStructuralFeature) { return eClass().getFeatureID(eStructuralFeature); } }
super.eSetDirectResource((Resource.Internal)store.getResource(this)); eBasicSetContainer(store.getContainer(this)); eBasicSetContainerFeatureID(store.getContainingFeatureID(this));