@Override public void onPostUpdate(PostUpdateEvent event) { evictCache( event.getEntity(), event.getPersister(), event.getSession(), event.getOldState() ); }
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) { 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() ); } } }
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; } }
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; } }
public void onPostUpdate(PostUpdateEvent event) { ClosureEventListener eventListener = findEventListener(event.getEntity(), event.getPersister().getFactory()); if (eventListener != null) { eventListener.onPostUpdate(event); } }
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()); } }