Hi Folks,
I'm having a little trouble adding username data to revisions using Envers.
I have managed to get envers to write revision information for one of my entities (to a _AUD table). I would also like to associate a username with each revision, so we can track who made a particular change.
I added a Revision Entity like this: -
{code}
@RevisionEntity(MyRevisionListener.class)
public class MyRevisionEntity extends DefaultRevisionEntity {
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
{code}
and a Revision Listener: -
{code}
public class MyRevisionListener implements RevisionListener {
@Override
public void newRevision(Object revisionEntity) {
MyRevisionEntity smpRE = (MyRevisionEntity) revisionEntity;
Object princ = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
if (princ == null) {
smpRE.setUsername("USER_NOT_FOUND");
}
else {
SecureMember sm = (SecureMember) princ;
smpRE.setUsername(sm.getUsername());
}
}
}
{code}
I expected a record to be created in the MyRevisionEntity table each time a new revision was created. It seems to just have a single entry. Have I misunderstood the purpose of the RevisionEntity/Listener or made a mistake in configuration? The _AUD tables seem to be working as expected by the way.
Thanks for your help
All the best,
Ash