if (!failure)
if (!failure && !(arg0.getThis() instanceof StatefulServiceInterface) )
    public Object invoke(MethodInvocation arg0) throws Throwable    {        secSys.setCurrentDetails();        Boolean readOnly = (Boolean) ht.execute(new CheckReadOnlyAction(secSys));        if ( readOnly != null && readOnly.booleanValue())        {        	if (log.isDebugEnabled())        	{        		log.debug("Tx readonly. Not saving current event.");        	}        } else {        	secSys.setCurrentEvent((Event)ht.merge(secSys.getCurrentEvent()));        }        log.info(String.format("Auth:\tuser=%s,group=%s,event=%s(%s)",        		secSys.currentUserId(),secSys.currentGroup().getId(),        		secSys.currentEvent().getId(),secSys.currentEvent().getType()));                boolean failure = false;        try {        	ht.execute(new EnableFilterAction(secSys));            Object retVal = arg0.proceed();            return retVal;        } catch (Exception ex){        	failure = true;        	throw ex;        } finally {        	try {	        	if (!failure)	        	{	        		ht.flush();	        		ht.execute(new CheckDirtyAction(secSys));	        		ht.execute(new DisableFilterAction(secSys));	        	}        	} finally {        		secSys.clearCurrentDetails();        	}        }    }