@Override public void onPostUpdate(PostUpdateEvent event) { evictCache( event.getEntity(), event.getPersister(), event.getSession(), event.getOldState() ); }
@Override public void onPostUpdate(PostUpdateEvent event) { final String entityName = event.getPersister().getEntityName(); if ( getEnversService().getEntitiesConfigurations().isVersioned( entityName ) ) { checkIfTransactionInProgress( event.getSession() ); final AuditProcess auditProcess = getEnversService().getAuditProcessManager().get( event.getSession() ); Object[] oldState = getOldDBState( auditProcess, entityName, event ); final Object[] newDbState = postUpdateDBState( event ); final AuditWorkUnit workUnit = new ModWorkUnit( event.getSession(), event.getPersister().getEntityName(), getEnversService(), event.getId(), event.getPersister(), newDbState, oldState ); auditProcess.addWorkUnit( workUnit ); if ( workUnit.containsWork() ) { generateBidirectionalCollectionChangeWorkUnits( auditProcess, event.getPersister(), entityName, newDbState, oldState, event.getSession() ); } } }
private Object[] postUpdateDBState(PostUpdateEvent event) { final Object[] newDbState = event.getState().clone(); if ( event.getOldState() != null ) { final EntityPersister entityPersister = event.getPersister(); for ( int i = 0; i < entityPersister.getPropertyNames().length; ++i ) { if ( !entityPersister.getPropertyUpdateability()[i] ) { // Assuming that PostUpdateEvent#getOldState() returns database state of the record before modification. // Otherwise, we would have to execute SQL query to be sure of @Column(updatable = false) column value. newDbState[i] = event.getOldState()[i]; } } } return newDbState; }
@Override public void onPostUpdate(PostUpdateEvent event) { Object entity = event.getEntity(); EventSource eventSource = event.getSession(); handlePostUpdate(entity, eventSource); }
private Object[] getOldDBState(AuditProcess auditProcess, String entityName, PostUpdateEvent event) { if ( isDetachedEntityUpdate( entityName, event.getOldState() ) ) { return auditProcess.getCachedEntityState( event.getId(), entityName ); } return event.getOldState(); }
public void onPostUpdate(PostUpdateEvent event) { if (DataPublishListener.handleExclude(event.getEntity())) return; if (event.getDirtyProperties() != null && event.getDirtyProperties().length > 0) { Object change = getChange(event.getPersister(), event.getSession(), event.getPersister().getEntityName(), event.getId(), event.getEntity()); if (change instanceof Change) { for (int i = 0; i < event.getDirtyProperties().length; i++) { int pidx = event.getDirtyProperties()[i]; String pname = event.getPersister().getPropertyNames()[pidx]; if (AnnotationUtils.isAnnotatedWith(event.getEntity(), pname, ExcludeFromDataPublish.class)) continue; ((Change)change).getChanges().put(pname, event.getState()[pidx]); } } else if (change == null) DataContext.addUpdate(EntityUpdateType.UPDATE, event.getEntity(), event.getEntity()); } }
@Override public void onPostUpdate(PostUpdateEvent event) { if ( !eventProcessingEnabled ) { return; } HibernateSearchContextService context = state.getHibernateSearchContext(); final Object entity = event.getEntity(); if ( isWorkable( context, entity ) ) { PojoWorkPlan workPlan = context.getCurrentWorkPlan( event.getSession() ); if ( dirtyCheckingEnabled ) { workPlan.update( event.getId(), entity, getDirtyPropertyNames( event ) ); } else { workPlan.update( event.getId(), entity ); } } }
@Override public void onPostUpdate(PostUpdateEvent event) { evictCache( event.getEntity(), event.getDescriptor(), event.getSession(), event.getOldState() ); }
public class ElasticSearchListener implements PostUpdateEventListener { @Override public void onPostUpdate(PostUpdateEvent event) { if (event.getEntity() instanceof ElasticSearchEntity ) { callSearchIndexerService(event.getEntity()); Or InjectedClass.act(event.getEntity()); Or callWebService(InjectedClassUtility.modifyData(event.getEntity())); ........ } }
public void onPostUpdate(PostUpdateEvent event) { ClosureEventListener eventListener = findEventListener(event.getEntity(), event.getPersister().getFactory()); if (eventListener != null) { eventListener.onPostUpdate(event); } }
@Override public void onPostUpdate(PostUpdateEvent event) { final String entityName = event.getDescriptor().getEntityName(); if ( getAuditService().getEntityBindings().isVersioned( entityName ) ) { checkIfTransactionInProgress( event.getSession() ); final AuditProcess auditProcess = getAuditService().getAuditProcess( event.getSession() ); Object[] oldState = getOldDBState( auditProcess, entityName, event ); final Object[] newDbState = postUpdateDBState( event ); final AuditWorkUnit workUnit = new ModWorkUnit( event.getSession(), event.getDescriptor().getEntityName(), getAuditService(), event.getId(), event.getDescriptor(), newDbState, oldState ); auditProcess.addWorkUnit( workUnit ); if ( workUnit.containsWork() ) { generateBidirectionalCollectionChangeWorkUnits( auditProcess, event.getDescriptor(), entityName, newDbState, event.getOldState(), event.getSession() ); } } }
@Override public void onPostUpdate(PostUpdateEvent event) { if ( state.eventsDisabled() ) { return; } final Object entity = event.getEntity(); final AbstractDocumentBuilder docBuilder = getDocumentBuilder( entity ); if ( docBuilder != null && ( state.skipDirtyChecks() || docBuilder.isDirty( getDirtyPropertyNames( event ) ) ) ) { Serializable id = event.getId(); processWork( tenantIdentifier( event ), entity, id, WorkType.UPDATE, event, false ); } }
@Override public void onPostUpdate(PostUpdateEvent event) { TopiaPersistenceContext context = getContext(event); if (context != null && event.getEntity() instanceof TopiaEntity) { TopiaEntity entity = (TopiaEntity) event.getEntity(); context.getTopiaFiresSupport().fireOnPostUpdate(context, entity, event.getState()); } }
public String[] getDirtyPropertyNames(PostUpdateEvent event) { EntityPersister persister = event.getPersister(); final int[] dirtyProperties = event.getDirtyProperties(); if ( dirtyProperties != null && dirtyProperties.length > 0 ) { String[] propertyNames = persister.getPropertyNames(); int length = dirtyProperties.length; String[] dirtyPropertyNames = new String[length]; for ( int i = 0; i < length; i++ ) { dirtyPropertyNames[i] = propertyNames[dirtyProperties[i]]; } return dirtyPropertyNames; } else { return null; } }
private void postUpdate() { final EventListenerGroup<PostUpdateEventListener> listenerGroup = listenerGroup( EventType.POST_UPDATE ); if ( listenerGroup.isEmpty() ) { return; } final PostUpdateEvent event = new PostUpdateEvent( getInstance(), getId(), state, previousState, dirtyFields, getPersister(), eventSource() ); for ( PostUpdateEventListener listener : listenerGroup.listeners() ) { listener.onPostUpdate( event ); } }
private Object[] postUpdateDBState(PostUpdateEvent event) { final Object[] newDbState = event.getState().clone(); if ( event.getOldState() != null ) { final EntityTypeDescriptor<?> entityDescriptor = event.getDescriptor(); entityDescriptor.visitStateArrayContributors( contributor -> { int index = contributor.getStateArrayPosition(); if ( !contributor.isUpdatable() ) { // Assuming that PostUpdateEvent#getOldState() returns database state of the record before // modification. Otherwise, we would have to execute SQL query to be sure of // @Column(updatable = false) column value. newDbState[ index ] = event.getOldState()[ index ]; } } ); } return newDbState; }
@Override public void onPostUpdate(PostUpdateEvent event) { Object entity = event.getEntity(); EventSource eventSource = event.getSession(); handlePostUpdate(entity, eventSource); }
public String[] getDirtyPropertyNames(PostUpdateEvent event) { EntityPersister persister = event.getPersister(); final int[] dirtyProperties = event.getDirtyProperties(); if ( dirtyProperties != null && dirtyProperties.length > 0 ) { String[] propertyNames = persister.getPropertyNames(); int length = dirtyProperties.length; String[] dirtyPropertyNames = new String[length]; for ( int i = 0; i < length; i++ ) { dirtyPropertyNames[i] = propertyNames[dirtyProperties[i]]; } return dirtyPropertyNames; } else { return EMPTY_STRING_ARRAY; } }
private Object[] getOldDBState(AuditProcess auditProcess, String entityName, PostUpdateEvent event) { if ( isDetachedEntityUpdate( entityName, event.getOldState() ) ) { return auditProcess.getCachedEntityState( event.getId(), entityName ); } return event.getOldState(); }