/** * INTERNAL: * Clear the changes in the ObjectChangeListener */ public void clearChanges(Object clone, UnitOfWorkImpl uow, ClassDescriptor descriptor, boolean forRefresh) { ObjectChangeListener listener = (ObjectChangeListener)((ChangeTracker)clone)._persistence_getPropertyChangeListener(); if (listener != null) { listener.clearChanges(forRefresh); } else { listener = (ObjectChangeListener)setChangeListener(clone, uow, descriptor); } ObjectBuilder builder = descriptor.getObjectBuilder(); // Only relationship mappings need to be reset. if (!builder.isSimple()) { dissableEventProcessing(clone); // Must also ensure the listener has been set on collections and aggregates. FetchGroupManager fetchGroupManager = descriptor.getFetchGroupManager(); boolean isPartialObject = (fetchGroupManager != null) && fetchGroupManager.isPartialObject(clone); List mappings = builder.getRelationshipMappings(); int size = mappings.size(); // Only cascade fetched mappings. for (int index = 0; index < size; index++) { DatabaseMapping mapping = (DatabaseMapping)mappings.get(index); if (!isPartialObject || fetchGroupManager.isAttributeFetched(clone, mapping.getAttributeName())) { mapping.setChangeListener(clone, listener, uow); } } enableEventProcessing(clone); } }
/** * INTERNAL: * Clear the changes in the ObjectChangeListener */ public void clearChanges(Object clone, UnitOfWorkImpl uow, ClassDescriptor descriptor) { ObjectChangeListener listener = (ObjectChangeListener)((ChangeTracker)clone)._persistence_getPropertyChangeListener(); if (listener != null) { listener.clearChanges(); } else { listener = (ObjectChangeListener)setChangeListener(clone, uow, descriptor); } ObjectBuilder builder = descriptor.getObjectBuilder(); // Only relationship mappings need to be reset. if (!builder.isSimple()) { dissableEventProcessing(clone); // Must also ensure the listener has been set on collections and aggregates. FetchGroupManager fetchGroupManager = descriptor.getFetchGroupManager(); boolean isPartialObject = (fetchGroupManager != null) && fetchGroupManager.isPartialObject(clone); List mappings = builder.getRelationshipMappings(); int size = mappings.size(); // Only cascade fetched mappings. for (int index = 0; index < size; index++) { DatabaseMapping mapping = (DatabaseMapping)mappings.get(index); if (!isPartialObject || fetchGroupManager.isAttributeFetched(clone, mapping.getAttributeName())) { mapping.setChangeListener(clone, listener, uow); } } enableEventProcessing(clone); } }
/** * INTERNAL: * Clear the changes in the ObjectChangeListener */ public void clearChanges(Object clone, UnitOfWorkImpl uow, ClassDescriptor descriptor, boolean forRefresh) { ObjectChangeListener listener = (ObjectChangeListener)((ChangeTracker)clone)._persistence_getPropertyChangeListener(); if (listener != null) { listener.clearChanges(forRefresh); } else { listener = (ObjectChangeListener)setChangeListener(clone, uow, descriptor); } ObjectBuilder builder = descriptor.getObjectBuilder(); // Only relationship mappings need to be reset. if (!builder.isSimple()) { dissableEventProcessing(clone); // Must also ensure the listener has been set on collections and aggregates. FetchGroupManager fetchGroupManager = descriptor.getFetchGroupManager(); boolean isPartialObject = (fetchGroupManager != null) && fetchGroupManager.isPartialObject(clone); List mappings = builder.getRelationshipMappings(); int size = mappings.size(); // Only cascade fetched mappings. for (int index = 0; index < size; index++) { DatabaseMapping mapping = (DatabaseMapping)mappings.get(index); if (!isPartialObject || fetchGroupManager.isAttributeFetched(clone, mapping.getAttributeName())) { mapping.setChangeListener(clone, listener, uow); } } enableEventProcessing(clone); } }