Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2012-10-31 06:24:59 +0000
committerEike Stepper2012-10-31 06:24:59 +0000
commit01c49a910e0aa861213745d14cf5a0ddcbd1e7b6 (patch)
tree9b75a298e880b08407a049fea5ef83d0fa7f4c5c /plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java
parentecf34dbf6e73114f17704797fa9bc80c39188152 (diff)
downloadcdo-01c49a910e0aa861213745d14cf5a0ddcbd1e7b6.tar.gz
cdo-01c49a910e0aa861213745d14cf5a0ddcbd1e7b6.tar.xz
cdo-01c49a910e0aa861213745d14cf5a0ddcbd1e7b6.zip
[392956] [Legacy] Support partial/conditional persistence of features
https://bugs.eclipse.org/bugs/show_bug.cgi?id=392956
Diffstat (limited to 'plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java')
-rw-r--r--plugins/org.eclipse.emf.cdo/src/org/eclipse/emf/internal/cdo/CDOObjectImpl.java15
1 files changed, 15 insertions, 0 deletions
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 d3d127c75f..a4e2cb1856 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
@@ -8,6 +8,7 @@
* Contributors:
* Eike Stepper - initial API and implementation
* Simon McDuff - maintenance
+ * Christian W. Damus - partial/conditional persistence of features
*/
package org.eclipse.emf.internal.cdo;
@@ -17,10 +18,13 @@ import org.eclipse.emf.cdo.CDOObjectHistory;
import org.eclipse.emf.cdo.CDOState;
import org.eclipse.emf.cdo.common.id.CDOID;
import org.eclipse.emf.cdo.common.lock.CDOLockState;
+import org.eclipse.emf.cdo.common.model.CDOModelUtil;
import org.eclipse.emf.cdo.common.model.EMFUtil;
import org.eclipse.emf.cdo.common.revision.CDORevision;
import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOClassInfo;
+import org.eclipse.emf.cdo.spi.common.model.InternalCDOClassInfo.PersistenceFilter;
import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision;
import org.eclipse.emf.cdo.util.CDOUtil;
import org.eclipse.emf.cdo.view.CDOView;
@@ -1064,6 +1068,17 @@ public class CDOObjectImpl extends EStoreEObjectImpl implements InternalCDOObjec
TRACER.format("Populating feature {0}", feature); //$NON-NLS-1$
}
+ PersistenceFilter filter = ((InternalCDOClassInfo)CDOModelUtil.getClassInfo(feature
+ .getEContainingClass())).getPersistenceFilter(feature);
+ if (filter != null)
+ {
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("Filtering value of feature {0}", feature); //$NON-NLS-1$
+ }
+ setting = filter.getPersistableValue(object, setting);
+ }
+
CDOStore cdoStore = view.getStore();
InternalCDORevision revision = object.cdoRevision();

Back to the top