/** * INTERNAL: * Assign ChangeListener to an aggregate object */ public void setAggregateChangeListener(Object parent, Object aggregate, UnitOfWorkImpl uow, ClassDescriptor descriptor, String mappingAttribute){ ((ChangeTracker)aggregate)._persistence_setPropertyChangeListener(new AggregateAttributeChangeListener(descriptor, uow, (AttributeChangeListener)((ChangeTracker)parent)._persistence_getPropertyChangeListener(), mappingAttribute, aggregate)); }
if (referenceDescriptor.getObjectChangePolicy().isAttributeChangeTrackingPolicy()){ ((AggregateAttributeChangeListener)((ChangeTracker)oldValue)._persistence_getPropertyChangeListener()).setParentListener(null); if(oldValue != null) { ((AggregateAttributeChangeListener)((ChangeTracker)oldValue)._persistence_getPropertyChangeListener()).setParentListener(null); newListener = new AggregateAttributeChangeListener(referenceDescriptor, uow, ((AttributeChangeListener)((ChangeTracker)sourceClone)._persistence_getPropertyChangeListener()), this.getAttributeName(), newValue); ((ChangeTracker)newValue)._persistence_setPropertyChangeListener(newListener); newListener.setParentListener((AttributeChangeListener)((ChangeTracker)sourceClone)._persistence_getPropertyChangeListener()); changeRecord.setChangedObject(((AggregateAttributeChangeListener)((ChangeTracker)sourceClone)._persistence_getPropertyChangeListener()).getObjectChangeSet()); } else {
if(((ChangeTracker)oldValue)._persistence_getPropertyChangeListener() != null) { ((AggregateAttributeChangeListener)((ChangeTracker)oldValue)._persistence_getPropertyChangeListener()).setParentListener(null); if(oldValue != null && ((ChangeTracker)oldValue)._persistence_getPropertyChangeListener() != null) { ((AggregateAttributeChangeListener)((ChangeTracker)oldValue)._persistence_getPropertyChangeListener()).setParentListener(null); newListener = new AggregateAttributeChangeListener(referenceDescriptor, uow, ((AttributeChangeListener)((ChangeTracker)sourceClone)._persistence_getPropertyChangeListener()), this.getAttributeName(), newValue); ((ChangeTracker)newValue)._persistence_setPropertyChangeListener(newListener); newListener.setParentListener((AttributeChangeListener)((ChangeTracker)sourceClone)._persistence_getPropertyChangeListener()); if (changeRecord.getChangedObject() != null && changeRecord.getChangedObject().hasChanges()) { changeRecord.setChangedObject(((AggregateAttributeChangeListener)((ChangeTracker)sourceClone)._persistence_getPropertyChangeListener()).getObjectChangeSet()); } else {
if(((ChangeTracker)oldValue)._persistence_getPropertyChangeListener() != null) { ((AggregateAttributeChangeListener)((ChangeTracker)oldValue)._persistence_getPropertyChangeListener()).setParentListener(null); if(oldValue != null && ((ChangeTracker)oldValue)._persistence_getPropertyChangeListener() != null) { ((AggregateAttributeChangeListener)((ChangeTracker)oldValue)._persistence_getPropertyChangeListener()).setParentListener(null); newListener = new AggregateAttributeChangeListener(referenceDescriptor, uow, ((AttributeChangeListener)((ChangeTracker)sourceClone)._persistence_getPropertyChangeListener()), this.getAttributeName(), newValue); ((ChangeTracker)newValue)._persistence_setPropertyChangeListener(newListener); newListener.setParentListener((AttributeChangeListener)((ChangeTracker)sourceClone)._persistence_getPropertyChangeListener()); if (changeRecord.getChangedObject() != null && changeRecord.getChangedObject().hasChanges()) { changeRecord.setChangedObject(((AggregateAttributeChangeListener)((ChangeTracker)sourceClone)._persistence_getPropertyChangeListener()).getObjectChangeSet()); } else {
/** * INTERNAL: * Assign ChangeListener to an aggregate object */ public void setAggregateChangeListener(Object parent, Object aggregate, UnitOfWorkImpl uow, ClassDescriptor descriptor, String mappingAttribute){ ((ChangeTracker)aggregate)._persistence_setPropertyChangeListener(new AggregateAttributeChangeListener(descriptor, uow, (AttributeChangeListener)((ChangeTracker)parent)._persistence_getPropertyChangeListener(), mappingAttribute, aggregate)); // set change trackers for nested aggregates Iterator<DatabaseMapping> i = descriptor.getMappings().iterator(); while (i.hasNext()){ DatabaseMapping mapping = i.next(); if (mapping.isAggregateObjectMapping()){ AggregateObjectMapping aggregateMapping = (AggregateObjectMapping)mapping; Object nestedAggregate = aggregateMapping.getAttributeValueFromObject(aggregate); if (nestedAggregate != null && nestedAggregate instanceof ChangeTracker){ descriptor.getObjectChangePolicy().setAggregateChangeListener(aggregate, nestedAggregate, uow, aggregateMapping.getReferenceDescriptor(), aggregateMapping.getAttributeName()); } } } }
/** * INTERNAL: * Assign ChangeListener to an aggregate object */ public void setAggregateChangeListener(Object parent, Object aggregate, UnitOfWorkImpl uow, ClassDescriptor descriptor, String mappingAttribute){ ((ChangeTracker)aggregate)._persistence_setPropertyChangeListener(new AggregateAttributeChangeListener(descriptor, uow, (AttributeChangeListener)((ChangeTracker)parent)._persistence_getPropertyChangeListener(), mappingAttribute, aggregate)); // set change trackers for nested aggregates Iterator<DatabaseMapping> i = descriptor.getMappings().iterator(); while (i.hasNext()){ DatabaseMapping mapping = i.next(); if (mapping.isAggregateObjectMapping()){ AggregateObjectMapping aggregateMapping = (AggregateObjectMapping)mapping; Object nestedAggregate = aggregateMapping.getAttributeValueFromObject(aggregate); if (nestedAggregate != null && nestedAggregate instanceof ChangeTracker){ descriptor.getObjectChangePolicy().setAggregateChangeListener(aggregate, nestedAggregate, uow, aggregateMapping.getReferenceDescriptor(), aggregateMapping.getAttributeName()); } } } }