Buggy code:
public class RemoteCommitEventManager extends AbstractConcurrentEventManager implements EndTransactionListener , Closeable { private static final Localizer _loc = Localizer . forPackage ( RemoteCommitEventManager . class ) ; private final RemoteCommitProvider _provider ; private boolean _transmitPersIds = false ; public RemoteCommitEventManager ( OpenJPAConfiguration conf ) { } public boolean areRemoteEventsEnabled ( ) { } public RemoteCommitProvider getRemoteCommitProvider ( ) { } public boolean getTransmitPersistedObjectIds ( ) { } public void setTransmitPersistedObjectIds ( boolean transmit ) { } public void addInternalListener ( RemoteCommitListener listen ) { } public void addListener ( RemoteCommitListener listen ) { } public void close ( ) { } protected void fireEvent ( Object event , Object listener ) { } public void fireLocalStaleNotification ( Object oid ) { } public void afterCommit ( TransactionEvent event ) { } private RemoteCommitEvent createRemoteCommitEvent ( TransactionEvent event ) { Broker broker = ( ( Broker ) ( event . getSource ( ) ) ) ; int payload ; Collection persIds = null ; Collection addClassNames = null ; Collection updates = null ; Collection deletes = null ; <START_BUG> if ( broker . isLargeTransaction ( ) ) { <END_BUG> payload = RemoteCommitEvent . PAYLOAD_EXTENTS ; addClassNames = RemoteCommitEventManager . toClassNames ( event . getPersistedTypes ( ) ) ; updates = RemoteCommitEventManager . toClassNames ( event . getUpdatedTypes ( ) ) ; deletes = RemoteCommitEventManager . toClassNames ( event . getDeletedTypes ( ) ) ; if ( ( ( addClassNames == null ) && ( updates == null ) ) && ( deletes == null ) ) return null ; } else { Collection trans = event . getTransactionalObjects ( ) ; if ( trans . isEmpty ( ) ) return null ; payload = ( _transmitPersIds ) ? RemoteCommitEvent . PAYLOAD_OIDS_WITH_ADDS : RemoteCommitEvent . PAYLOAD_OIDS ; Object oid ; Object obj ; OpenJPAStateManager sm ; for ( Iterator itr = trans . iterator ( ) ; itr . hasNext ( ) ; ) { obj = itr . next ( ) ; sm = broker . getStateManager ( obj ) ; if ( ( ( sm == null ) || ( ! ( sm . isPersistent ( ) ) ) ) || ( ! ( sm . isDirty ( ) ) ) ) continue ; if ( ( sm . isNew ( ) ) && ( sm . isDeleted ( ) ) ) continue ; oid = sm . fetchObjectId ( ) ; if ( sm . isNew ( ) ) { if ( _transmitPersIds ) { if ( persIds == null ) persIds = new ArrayList ( ) ; persIds . add ( oid ) ; } if ( addClassNames == null ) addClassNames = new HashSet ( ) ; addClassNames . add ( obj . getClass ( ) . getName ( ) ) ; } else if ( sm . isDeleted ( ) ) { if ( deletes == null ) deletes = new ArrayList ( ) ; deletes . add ( oid ) ; } else { if ( updates == null ) updates = new ArrayList ( ) ; updates . add ( oid ) ; } } if ( ( ( addClassNames == null ) && ( updates == null ) ) && ( deletes == null ) ) return null ; } return new RemoteCommitEvent ( payload , persIds , addClassNames , updates , deletes ) ; } private static Collection toClassNames ( Collection clss ) { } public void beforeCommit ( TransactionEvent event ) { } public void afterRollback ( TransactionEvent event ) { } public void afterCommitComplete ( TransactionEvent event ) { } public void afterRollbackComplete ( TransactionEvent event ) { } public void afterStateTransitions ( TransactionEvent event ) { } }

Fix:
if ( broker . isTrackChangesByType ( ) ) {