/* * Copyright 2011 E.J.I.E., S.A. * * Licencia con arreglo a la EUPL, Versión 1.1 exclusivamente (la «Licencia»); * Solo podrá usarse esta obra si se respeta la Licencia. * Puede obtenerse una copia de la Licencia en * * http://ec.europa.eu/idabc/eupl.html * * Salvo cuando lo exija la legislación aplicable o se acuerde por escrito, * el programa distribuido con arreglo a la Licencia se distribuye «TAL CUAL», * SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ni expresas ni implícitas. * Véase la Licencia en el idioma concreto que rige los permisos y limitaciones * que establece la Licencia. */ package com.ejie.x38.aop; import org.aspectj.lang.ProceedingJoinPoint; import com.ejie.x38.log.IncidenceLoggingAdvice; import com.ejie.x38.log.LoggingAdvice; /** * * Advice principal que se encarga de gestionar toda la informacion interceptada por los PointCuts. * Actualmente solo se usa para el aspecto de Logging. * * @author UDA * */ public class MainAdvice { private LoggingAdvice filterLoggingAdvice; private LoggingAdvice serviceLoggingAdvice; private LoggingAdvice daoLoggingAdvice; private IncidenceLoggingAdvice incidenceLoggingAdvice; /** * MainAdvice que se ejecuta alrededor de llamadas a un filtro, de tal manera que loguea * la peticion y la respuesta de este. * @param call Llamada interceptada. * @return Retorno de la llamada interceptada. * @throws Throwable Throwable Excepcion que se deja pasar, en caso de que el Target la genere. */ public Object filterCall(ProceedingJoinPoint call) throws Throwable { filterLoggingAdvice.preLogging(call); Object ret = call.proceed(); filterLoggingAdvice.postLogging(call, ret); return ret; } /** * MainAdvice que se ejecuta alrededor de llamadas a servicios, de tal manera que loguea * la peticion y la respuesta de estas. * * @param call Llamada interceptada. * @return Retorno de la llamada interceptada. * @throws Throwable Excepcion que se deja pasar, en caso de que el Target la genere. */ public Object serviceLogCall(ProceedingJoinPoint call) throws Throwable { serviceLoggingAdvice.preLogging(call); Object ret = call.proceed(); serviceLoggingAdvice.postLogging(call, ret); return ret; } /** * MainAdvice que loguea las llamadas a los DAOs, registrando los valores de entrada y salida. * * @param call Llamada interceptada. * @return Retorno de la llamada interceptada. * @throws Throwable Throwable Excepcion que se deja pasar, en caso de que el Target la genere. */ public Object daoLogCall(ProceedingJoinPoint call) throws Throwable { daoLoggingAdvice.preLogging(call); Object ret = call.proceed(); daoLoggingAdvice.postLogging(call, ret); return ret; } /** * Advice que se encarga de loguear las excepciones no controladas. * * @param target Clase que lanza la excepcion no controlada. * @param exception Excepcion capturada. */ public void logIncidence (Object target, Exception exception){ incidenceLoggingAdvice.logIncidence(target, exception); } //Getters & Setters public void setFilterLoggingAdvice(LoggingAdvice filterLoggingAdvice) { this.filterLoggingAdvice = filterLoggingAdvice; } public LoggingAdvice getServiceLoggingAdvice() { return serviceLoggingAdvice; } public void setServiceLoggingAdvice(LoggingAdvice serviceLoggingAdvice) { this.serviceLoggingAdvice = serviceLoggingAdvice; } public LoggingAdvice getDaoLoggingAdvice() { return daoLoggingAdvice; } public void setDaoLoggingAdvice(LoggingAdvice daoLoggingAdvice) { this.daoLoggingAdvice = daoLoggingAdvice; } public IncidenceLoggingAdvice getIncidenceLoggingAdvice() { return incidenceLoggingAdvice; } public void setIncidenceLoggingAdvice(IncidenceLoggingAdvice incidenceLoggingAdvice) { this.incidenceLoggingAdvice = incidenceLoggingAdvice; } }