/** * INTERNAL: * The message is passed to its reference class descriptor. */ public void preUpdateAttributeValue(WriteObjectQuery query, Object attributeValue) throws DatabaseException, OptimisticLockException { if (attributeValue == null) { return; } // PERF: Avoid for simple aggregates. AbstractSession session = query.getSession(); ClassDescriptor descriptor = getReferenceDescriptor(attributeValue, session); if (descriptor.getObjectBuilder().isSimple() && !descriptor.getEventManager().hasAnyEventListeners()) { return; } WriteObjectQuery aggregateQuery = buildAggregateWriteQuery(query, attributeValue); ObjectChangeSet changeSet = null; UnitOfWorkChangeSet uowChangeSet = null; if (session.isUnitOfWork() && (((UnitOfWorkImpl)session).getUnitOfWorkChangeSet() != null)) { uowChangeSet = (UnitOfWorkChangeSet)((UnitOfWorkImpl)session).getUnitOfWorkChangeSet(); changeSet = (ObjectChangeSet)uowChangeSet.getObjectChangeSetForClone(aggregateQuery.getObject()); } aggregateQuery.setObjectChangeSet(changeSet); // aggregates do not actually use a query to write to the database so the pre-write must be called here if (changeSet == null) {// then we didn't fire events at calculations executeEvent(DescriptorEventManager.PreWriteEvent, aggregateQuery); executeEvent(DescriptorEventManager.PreUpdateEvent, aggregateQuery); } descriptor.getQueryManager().preUpdate(aggregateQuery); }
/** * INTERNAL: * The message is passed to its reference class descriptor. */ public void preUpdateAttributeValue(WriteObjectQuery query, Object attributeValue) throws DatabaseException, OptimisticLockException { if (attributeValue == null) { return; } // PERF: Avoid for simple aggregates. AbstractSession session = query.getSession(); ClassDescriptor descriptor = getReferenceDescriptor(attributeValue, session); if (descriptor.getObjectBuilder().isSimple() && !descriptor.getEventManager().hasAnyEventListeners()) { return; } WriteObjectQuery aggregateQuery = buildAggregateWriteQuery(query, attributeValue); ObjectChangeSet changeSet = null; UnitOfWorkChangeSet uowChangeSet = null; if (session.isUnitOfWork() && (((UnitOfWorkImpl)session).getUnitOfWorkChangeSet() != null)) { uowChangeSet = (UnitOfWorkChangeSet)((UnitOfWorkImpl)session).getUnitOfWorkChangeSet(); changeSet = (ObjectChangeSet)uowChangeSet.getObjectChangeSetForClone(aggregateQuery.getObject()); } aggregateQuery.setObjectChangeSet(changeSet); // aggregates do not actually use a query to write to the database so the pre-write must be called here if (changeSet == null) {// then we didn't fire events at calculations executeEvent(DescriptorEventManager.PreWriteEvent, aggregateQuery); executeEvent(DescriptorEventManager.PreUpdateEvent, aggregateQuery); } descriptor.getQueryManager().preUpdate(aggregateQuery); }
/** * INTERNAL: * The message is passed to its reference class descriptor. */ public void preUpdateAttributeValue(WriteObjectQuery query, Object attributeValue) throws DatabaseException, OptimisticLockException { if (attributeValue == null) { return; } // PERF: Avoid for simple aggregates. AbstractSession session = query.getSession(); ClassDescriptor descriptor = getReferenceDescriptor(attributeValue, session); if (descriptor.getObjectBuilder().isSimple() && !descriptor.getEventManager().hasAnyEventListeners()) { return; } WriteObjectQuery aggregateQuery = buildAggregateWriteQuery(query, attributeValue); ObjectChangeSet changeSet = null; UnitOfWorkChangeSet uowChangeSet = null; if (session.isUnitOfWork() && (((UnitOfWorkImpl)session).getUnitOfWorkChangeSet() != null)) { uowChangeSet = (UnitOfWorkChangeSet)((UnitOfWorkImpl)session).getUnitOfWorkChangeSet(); changeSet = (ObjectChangeSet)uowChangeSet.getObjectChangeSetForClone(aggregateQuery.getObject()); } aggregateQuery.setObjectChangeSet(changeSet); // aggregates do not actually use a query to write to the database so the pre-write must be called here if (changeSet == null) {// then we didn't fire events at calculations executeEvent(DescriptorEventManager.PreWriteEvent, aggregateQuery); executeEvent(DescriptorEventManager.PreUpdateEvent, aggregateQuery); } descriptor.getQueryManager().preUpdate(aggregateQuery); }
queryManager.preUpdate(writeQuery);
queryManager.preUpdate(writeQuery);
queryManager.preUpdate(writeQuery);
queryManager.preUpdate(writeQuery);
queryManager.preUpdate(writeQuery);
queryManager.preUpdate(writeQuery);