@Override public boolean hasAnyEventListeners() { return delegate.hasAnyEventListeners(); }
/** * INTERNAL: * Execute a descriptor event for the specified event code. */ protected void executeEvent(int eventCode, ObjectLevelModifyQuery query) { ClassDescriptor referenceDescriptor = getReferenceDescriptor(query.getObject().getClass(), query.getSession()); // PERF: Avoid events if no listeners. if (referenceDescriptor.getEventManager().hasAnyEventListeners()) { referenceDescriptor.getEventManager().executeEvent(new DescriptorEvent(eventCode, query)); } }
/** * INTERNAL: * Execute a descriptor event for the specified event code. */ protected void executeEvent(int eventCode, ObjectLevelModifyQuery query) { ClassDescriptor referenceDescriptor = getReferenceDescriptor(query.getObject().getClass(), query.getSession()); // PERF: Avoid events if no listeners. if (referenceDescriptor.getEventManager().hasAnyEventListeners()) { referenceDescriptor.getEventManager().executeEvent(new DescriptorEvent(eventCode, query)); } }
/** * INTERNAL: * Execute a descriptor event for the specified event code. */ protected void executeEvent(int eventCode, ObjectLevelModifyQuery query) { ClassDescriptor referenceDescriptor = getReferenceDescriptor(query.getObject().getClass(), query.getSession()); // PERF: Avoid events if no listeners. if (referenceDescriptor.getEventManager().hasAnyEventListeners()) { referenceDescriptor.getEventManager().executeEvent(new DescriptorEvent(eventCode, query)); } }
/** * INTERNAL: * Register the working copy of a new object and its original. * The user must edit the working copy and the original is used to merge into the parent. * This mapping is kept both ways because lookup is required in both directions. */ protected void registerNewObjectClone(Object clone, Object original, ClassDescriptor descriptor) { // Check if the new objects should be cached. registerNewObjectInIdentityMap(clone, original, descriptor); getNewObjectsCloneToOriginal().put(clone, original); if (original != null) { getNewObjectsOriginalToClone().put(original, clone); } // run prePersist callbacks if any if (descriptor.getEventManager().hasAnyEventListeners()) { DescriptorEvent event = new DescriptorEvent(clone); event.setEventCode(DescriptorEventManager.PrePersistEvent); event.setSession(this); descriptor.getEventManager().executeEvent(event); } }
/** * INTERNAL: * Register the working copy of a new object and its original. * The user must edit the working copy and the original is used to merge into the parent. * This mapping is kept both ways because lookup is required in both directions. */ protected void registerNewObjectClone(Object clone, Object original, ClassDescriptor descriptor) { // Check if the new objects should be cached. registerNewObjectInIdentityMap(clone, original, descriptor); getNewObjectsCloneToOriginal().put(clone, original); if (original != null) { getNewObjectsOriginalToClone().put(original, clone); } // run prePersist callbacks if any if (descriptor.getEventManager().hasAnyEventListeners()) { DescriptorEvent event = new DescriptorEvent(clone); event.setEventCode(DescriptorEventManager.PrePersistEvent); event.setSession(this); descriptor.getEventManager().executeEvent(event); } }
/** * INTERNAL: * Execute a descriptor event for the specified event code. */ protected void executeEvent(int eventCode, ObjectLevelModifyQuery query) { ClassDescriptor referenceDescriptor = getReferenceDescriptor(query.getObject(), query.getSession()); // PERF: Avoid events if no listeners. if (referenceDescriptor.getEventManager().hasAnyEventListeners()) { referenceDescriptor.getEventManager().executeEvent(new org.eclipse.persistence.descriptors.DescriptorEvent(eventCode, query)); } }
/** * INTERNAL: * Execute a descriptor event for the specified event code. */ protected void executeEvent(int eventCode, ObjectLevelModifyQuery query) { ClassDescriptor referenceDescriptor = getReferenceDescriptor(query.getObject(), query.getSession()); // PERF: Avoid events if no listeners. if (referenceDescriptor.getEventManager().hasAnyEventListeners()) { referenceDescriptor.getEventManager().executeEvent(new org.eclipse.persistence.descriptors.DescriptorEvent(eventCode, query)); } }
/** * INTERNAL: * Execute a descriptor event for the specified event code. */ protected void executeEvent(int eventCode, ObjectLevelModifyQuery query) { ClassDescriptor referenceDescriptor = getReferenceDescriptor(query.getObject(), query.getSession()); // PERF: Avoid events if no listeners. if (referenceDescriptor.getEventManager().hasAnyEventListeners()) { referenceDescriptor.getEventManager().executeEvent(new org.eclipse.persistence.descriptors.DescriptorEvent(eventCode, query)); } }
/** * INTERNAL: * The message is passed to its reference class descriptor. */ public void postDeleteAttributeValue(DeleteObjectQuery query, Object attributeValue) throws DatabaseException, OptimisticLockException { if (attributeValue == null) { return; } // PERF: Avoid for simple aggregates. ClassDescriptor descriptor = getReferenceDescriptor(attributeValue, query.getSession()); if (descriptor.getObjectBuilder().isSimple() && !descriptor.getEventManager().hasAnyEventListeners()) { return; } DeleteObjectQuery aggregateQuery = buildAggregateDeleteQuery(query, attributeValue); descriptor.getQueryManager().postDelete(aggregateQuery); executeEvent(DescriptorEventManager.PostDeleteEvent, aggregateQuery); }
/** * INTERNAL: * The message is passed to its reference class descriptor. */ public void postDeleteAttributeValue(DeleteObjectQuery query, Object attributeValue) throws DatabaseException, OptimisticLockException { if (attributeValue == null) { return; } // PERF: Avoid for simple aggregates. ClassDescriptor descriptor = getReferenceDescriptor(attributeValue, query.getSession()); if (descriptor.getObjectBuilder().isSimple() && !descriptor.getEventManager().hasAnyEventListeners()) { return; } DeleteObjectQuery aggregateQuery = buildAggregateDeleteQuery(query, attributeValue); descriptor.getQueryManager().postDelete(aggregateQuery); executeEvent(DescriptorEventManager.PostDeleteEvent, aggregateQuery); }
/** * INTERNAL: * The message is passed to its reference class descriptor. */ public void preDeleteAttributeValue(DeleteObjectQuery 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; } DeleteObjectQuery aggregateQuery = buildAggregateDeleteQuery(query, attributeValue); executeEvent(DescriptorEventManager.PreDeleteEvent, aggregateQuery); descriptor.getQueryManager().preDelete(aggregateQuery); }
/** * INTERNAL: * The message is passed to its reference class descriptor. */ public void postDeleteAttributeValue(DeleteObjectQuery query, Object attributeValue) throws DatabaseException, OptimisticLockException { if (attributeValue == null) { return; } // PERF: Avoid for simple aggregates. ClassDescriptor descriptor = getReferenceDescriptor(attributeValue, query.getSession()); if (descriptor.getObjectBuilder().isSimple() && !descriptor.getEventManager().hasAnyEventListeners()) { return; } DeleteObjectQuery aggregateQuery = buildAggregateDeleteQuery(query, attributeValue); descriptor.getQueryManager().postDelete(aggregateQuery); executeEvent(DescriptorEventManager.PostDeleteEvent, aggregateQuery); }
/** * INTERNAL: * The message is passed to its reference class descriptor. */ public void preDeleteAttributeValue(DeleteObjectQuery 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; } DeleteObjectQuery aggregateQuery = buildAggregateDeleteQuery(query, attributeValue); executeEvent(DescriptorEventManager.PreDeleteEvent, aggregateQuery); descriptor.getQueryManager().preDelete(aggregateQuery); }
/** * INTERNAL: * The message is passed to its reference class descriptor. */ public void preDeleteAttributeValue(DeleteObjectQuery 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; } DeleteObjectQuery aggregateQuery = buildAggregateDeleteQuery(query, attributeValue); executeEvent(DescriptorEventManager.PreDeleteEvent, aggregateQuery); descriptor.getQueryManager().preDelete(aggregateQuery); }
protected void postBuildAttributesIntoObjectEvent(Object domainObject, AbstractRecord databaseRow, ObjectBuildingQuery query, boolean forRefresh) { DescriptorEventManager descriptorEventManager = this.descriptor.getDescriptorEventManager(); if(descriptorEventManager.hasAnyEventListeners()) { // Need to run post build or refresh selector, currently check with the query for this, // I'm not sure which should be called it case of refresh building a new object, currently refresh is used... org.eclipse.persistence.descriptors.DescriptorEvent event = new DescriptorEvent(domainObject); event.setQuery(query); event.setSession(query.getSession()); event.setRecord(databaseRow); if (forRefresh) { //this method can be called from different places within TopLink. We may be //executing refresh query but building the object not refreshing so we must //throw the appropriate event. //bug 3325315 event.setEventCode(DescriptorEventManager.PostRefreshEvent); } else { event.setEventCode(DescriptorEventManager.PostBuildEvent); } descriptorEventManager.executeEvent(event); } }
protected void postBuildAttributesIntoObjectEvent(Object domainObject, AbstractRecord databaseRow, ObjectBuildingQuery query, boolean forRefresh) { DescriptorEventManager descriptorEventManager = this.descriptor.getDescriptorEventManager(); if(descriptorEventManager.hasAnyEventListeners()) { // Need to run post build or refresh selector, currently check with the query for this, // I'm not sure which should be called it case of refresh building a new object, currently refresh is used... org.eclipse.persistence.descriptors.DescriptorEvent event = new DescriptorEvent(domainObject); event.setQuery(query); event.setSession(query.getSession()); event.setRecord(databaseRow); if (forRefresh) { //this method can be called from different places within TopLink. We may be //executing refresh query but building the object not refreshing so we must //throw the appropriate event. //bug 3325315 event.setEventCode(DescriptorEventManager.PostRefreshEvent); } else { event.setEventCode(DescriptorEventManager.PostBuildEvent); } descriptorEventManager.executeEvent(event); } }
/** * INTERNAL: * The message is passed to its reference class descriptor. */ public void postInsertAttributeValue(WriteObjectQuery query, Object attributeValue) throws DatabaseException, OptimisticLockException { if (attributeValue == null) { return; } // PERF: Avoid for simple aggregates. ClassDescriptor descriptor = getReferenceDescriptor(attributeValue, query.getSession()); if (descriptor.getObjectBuilder().isSimple() && !descriptor.getEventManager().hasAnyEventListeners()) { return; } WriteObjectQuery aggregateQuery = buildAggregateWriteQuery(query, attributeValue); descriptor.getQueryManager().postInsert(aggregateQuery); executeEvent(DescriptorEventManager.PostInsertEvent, aggregateQuery); // aggregates do not actually use a query to write to the database so the post write must be called here executeEvent(DescriptorEventManager.PostWriteEvent, aggregateQuery); }
/** * INTERNAL: * The message is passed to its reference class descriptor. */ public void postInsertAttributeValue(WriteObjectQuery query, Object attributeValue) throws DatabaseException, OptimisticLockException { if (attributeValue == null) { return; } // PERF: Avoid for simple aggregates. ClassDescriptor descriptor = getReferenceDescriptor(attributeValue, query.getSession()); if (descriptor.getObjectBuilder().isSimple() && !descriptor.getEventManager().hasAnyEventListeners()) { return; } WriteObjectQuery aggregateQuery = buildAggregateWriteQuery(query, attributeValue); descriptor.getQueryManager().postInsert(aggregateQuery); executeEvent(DescriptorEventManager.PostInsertEvent, aggregateQuery); // aggregates do not actually use a query to write to the database so the post write must be called here executeEvent(DescriptorEventManager.PostWriteEvent, aggregateQuery); }
/** * INTERNAL: * The message is passed to its reference class descriptor. */ public void postInsertAttributeValue(WriteObjectQuery query, Object attributeValue) throws DatabaseException, OptimisticLockException { if (attributeValue == null) { return; } // PERF: Avoid for simple aggregates. ClassDescriptor descriptor = getReferenceDescriptor(attributeValue, query.getSession()); if (descriptor.getObjectBuilder().isSimple() && !descriptor.getEventManager().hasAnyEventListeners()) { return; } WriteObjectQuery aggregateQuery = buildAggregateWriteQuery(query, attributeValue); descriptor.getQueryManager().postInsert(aggregateQuery); executeEvent(DescriptorEventManager.PostInsertEvent, aggregateQuery); // aggregates do not actually use a query to write to the database so the post write must be called here executeEvent(DescriptorEventManager.PostWriteEvent, aggregateQuery); }