You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cactus-dev@jakarta.apache.org by vm...@apache.org on 2004/04/10 20:21:05 UTC
cvs commit: jakarta-cactus/framework/src/aspect/org/apache/cactus/util/log LogAspect.aj
vmassol 2004/04/10 11:21:05
Added: framework/src/aspect/org/apache/cactus/internal/util/log
LogAspect.aj
Removed: framework/src/aspect/org/apache/cactus/util/log LogAspect.aj
Log:
Moved more internal classes (i.e. non user-public classes) to the internal package
Revision Changes Path
1.1 jakarta-cactus/framework/src/aspect/org/apache/cactus/internal/util/log/LogAspect.aj
Index: LogAspect.aj
===================================================================
/*
* ========================================================================
*
* Copyright 2001-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* ========================================================================
*/
package org.apache.cactus.util.log;
import org.aspectj.lang.reflect.*;
import org.aspectj.lang.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* Log every entry and exit of methods.
*
* @author <a href="mailto:vmassol@apache.org">Vincent Massol</a>
*
* @version $Id: LogAspect.aj,v 1.3 2004/02/14 14:51:24 vmassol Exp $
*/
public aspect LogAspect
{
/**
* All objects in the log package. We don't want to log these as they are
* the object that perform the logging and thus at execution time we would
* enter an infinite recursive loop.
*/
pointcut logObjectCalls() :
execution(public * org.apache.cactus.internal.util.log..*(..))
|| execution(public * org.apache.cactus.internal.util.ClassLoaderUtils.loadPropertyResourceBundle(..));
/**
* All public static methods that have parameters.
*/
pointcut publicStaticMethodsWithParameterCalls() :
!execution(public static * org.apache.cactus..*())
&& execution(public static * org.apache.cactus..*(..));
/**
* All public methods that have parameters.
*/
pointcut publicMethodsWithParameterCalls() :
!execution(public * org.apache.cactus..*())
&& execution(public * org.apache.cactus..*(..));
/**
* All public methods that return values
*/
pointcut publicMethodsWithReturnValueCalls() :
!execution(public void org.apache.cactus..*(..))
&& execution(public * org.apache.cactus..*(..));
/**
* Log all entries and exits of static methods that have no return values.
*/
Object around() :
!logObjectCalls()
&& publicMethodsWithParameterCalls()
&& publicStaticMethodsWithParameterCalls()
&& !publicMethodsWithReturnValueCalls()
{
// Get The logger to perform logging
Log logger =
LogFactory.getLog(thisJoinPoint.getSignature().getDeclaringType());
if (logger.isDebugEnabled())
{
// Log the entry
logger.debug('<' + getFullSignature(thisJoinPoint));
// Execute the method
final Object result = proceed();
// Log the exit
logger.debug('>' + thisJoinPoint.getSignature().getName());
return result;
}
return proceed();
}
/**
* Log all entries and exits of non-static methods that have no return
* values.
*/
Object around() :
!logObjectCalls()
&& publicMethodsWithParameterCalls()
&& !publicStaticMethodsWithParameterCalls()
&& !publicMethodsWithReturnValueCalls()
{
// The class that uses the method that has been called
final Class target = thisJoinPoint.getTarget().getClass();
// Get The logger to perform logging
Log logger = LogFactory.getLog(target);
if (logger.isDebugEnabled())
{
// Log the entry
logger.debug('<' + getFullSignature(thisJoinPoint));
// Execute the method
final Object result = proceed();
// Log the exit
logger.debug('>' + thisJoinPoint.getSignature().getName());
return result;
}
return proceed();
}
/**
* Log all entries and exits of static methods that have return values.
*/
Object around() :
!logObjectCalls()
&& publicMethodsWithParameterCalls()
&& publicMethodsWithReturnValueCalls()
&& publicStaticMethodsWithParameterCalls()
{
// Get The logger to perform logging
Log logger =
LogFactory.getLog(thisJoinPoint.getSignature().getDeclaringType());
if (logger.isDebugEnabled())
{
// Log the entry
logger.debug('<' + getFullSignature(thisJoinPoint));
// Execute the method
final Object result = proceed();
// Compute the exit string to print
final StringBuffer exitString =
new StringBuffer(thisJoinPoint.getSignature().getName());
exitString.append(' ');
exitString.append('=');
exitString.append(' ');
exitString.append('[');
exitString.append(result);
exitString.append(']');
// Log the exit
logger.debug('>' + exitString.toString());
return result;
}
return proceed();
}
/**
* Log all entries and exits of non-static methods that have return values.
*/
Object around() :
!logObjectCalls()
&& publicMethodsWithParameterCalls()
&& publicMethodsWithReturnValueCalls()
&& !publicStaticMethodsWithParameterCalls()
{
// The class that uses the method that has been called
final Class target = thisJoinPoint.getTarget().getClass();
// Get The logger to perform logging
Log logger = LogFactory.getLog(target);
if (logger.isDebugEnabled())
{
// Log the entry
logger.debug('<' + getFullSignature(thisJoinPoint));
// Execute the method
final Object result = proceed();
// Compute the exit string to print
final StringBuffer exitString =
new StringBuffer(thisJoinPoint.getSignature().getName());
exitString.append(' ');
exitString.append('=');
exitString.append(' ');
exitString.append('[');
exitString.append(result);
exitString.append(']');
// Log the exit
logger.debug('>' + exitString.toString());
return result;
}
return proceed();
}
/**
* @return the full signature of a method
*/
private final String getFullSignature(final JoinPoint jp)
{
StringBuffer buffer = new StringBuffer();
buffer.append(jp.getSignature().getName());
buffer.append('(');
final Object[] objs = jp.getArgs();
if (objs.length > 0)
{
for (int i = 0; i < objs.length - 1; i++)
{
buffer.append('[');
buffer.append(objs[i]);
buffer.append(']');
buffer.append(',');
buffer.append(' ');
}
buffer.append('[');
buffer.append(objs[objs.length - 1]);
buffer.append(']');
}
buffer.append(')');
return buffer.toString();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: cactus-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: cactus-dev-help@jakarta.apache.org