/*
* Copyright 2013 GiavaCms.org.
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.giavacms.common.interceptor;
import java.util.Arrays;
import javax.enterprise.inject.Instance;
import javax.inject.Inject;
import javax.interceptor.AroundInvoke;
import javax.interceptor.Interceptor;
import javax.interceptor.InvocationContext;
import org.giavacms.common.annotation.LogOperation;
import org.giavacms.common.annotation.NoLogOperation;
import org.jboss.logging.Logger;
@LogOperation
@Interceptor
public class LogOperationInterceptor
{
@Inject
Instance<LogWriter> logWriters;
Logger logger = Logger.getLogger(LogOperationInterceptor.class);
@AroundInvoke
public Object manageTransaction(InvocationContext ctx) throws Exception
{
String className = ctx.getTarget().getClass().getName();
String methodName = ctx.getMethod().getName();
String params = Arrays.toString(ctx.getParameters());
Object result = ctx.proceed();
if (ctx.getMethod().getAnnotation(NoLogOperation.class) != null)
{
logger.info("NOLOG: className: " + className + " methodname: "
+ methodName);
}
else if (logWriters != null)
{
for (LogWriter logWriter : logWriters)
{
logWriter.write(className, methodName, params, result);
}
}
else
logger.info("className: " + className + " methodname: "
+ methodName + " params:" + params + " result: "
+ result.toString());
return result;
}
}