From 6b5e54ee1f4b753297cc09723f174bf512831e29 Mon Sep 17 00:00:00 2001 From: jensp Date: Tue, 21 Feb 2017 14:24:01 +0000 Subject: [PATCH] CCM NG/ccm-core: Completed code for CcmRevisionListener git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@4587 8810af33-2d31-482b-a856-94f89814c4df --- .../auditing/CcmRevisionListener.java | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/ccm-core/src/main/java/org/libreccm/auditing/CcmRevisionListener.java b/ccm-core/src/main/java/org/libreccm/auditing/CcmRevisionListener.java index 97e5507e5..aec9891be 100644 --- a/ccm-core/src/main/java/org/libreccm/auditing/CcmRevisionListener.java +++ b/ccm-core/src/main/java/org/libreccm/auditing/CcmRevisionListener.java @@ -18,7 +18,11 @@ */ package org.libreccm.auditing; +import java.util.Optional; import org.hibernate.envers.RevisionListener; +import org.libreccm.cdi.utils.CdiUtil; +import org.libreccm.security.Shiro; +import org.libreccm.security.User; /** @@ -30,20 +34,21 @@ public class CcmRevisionListener implements RevisionListener { @Override public void newRevision(final Object revisionEntity) { + if (!(revisionEntity instanceof CcmRevision)) { throw new IllegalArgumentException(String.format( "Provided revision entity is not an instance of class \"%s\".", CcmRevision.class.getName())); } - -// final CcmRevision revision = (CcmRevision) revisionEntity; - //ToDo: Add code using Shiro Subject + final CcmRevision revision = (CcmRevision) revisionEntity; -// final Subject subject = sessionContext.getCurrentSubject(); -// if (subject instanceof User) { -// final User user = (User) subject; -// revision.setUserName(user.getScreenName()); -// } + final CdiUtil cdiUtil = CdiUtil.createCdiUtil(); + final Shiro shiro = cdiUtil.findBean(Shiro.class); + + final Optional user = shiro.getUser(); + if (user.isPresent()) { + revision.setUserName(user.get().getName()); + } } }