Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] java.lang.StackOverflowError -- Pointcut written incorrectly?



Should use  !cflow(execution(String *.toString())) instead.

----------------------------------------------------------
  Dr. Bo Yi
  WAS L3 Support
  IBM Toronto Lab
  A2-713/Q2Z/8200/MKM
  8200 Warden Ave. Markham ONT. L6G 1C7
  Phone: 905-413-4819
  Tie Line: 969-4819
  E-Mail: boyi@xxxxxxxxxx



                                                                           
             Michael McConnell                                             
             <mcconnellem@yaho                                             
             o.com>                                                     To 
             Sent by:                  aspectj-users@xxxxxxxxxxx           
             aspectj-users-adm                                          cc 
             in@xxxxxxxxxxx                                                
                                                                   Subject 
                                       [aspectj-users]                     
             06/23/2004 10:16          java.lang.StackOverflowError --     
             AM                        Pointcut written incorrectly?       
                                                                           
                                                                           
             Please respond to                                             
               aspectj-users                                               
                                                                           
                                                                           




Hello --

I am getting a java.lang.StackOverflowError when attempting to trace using
the following
aspect:

note that on line 15 (the before() rule) I have the following:
!execution(String *.toString())
-- which is designed to prevent this type of problem from occurring. It
didn't help.
I added the rule:
&& !execution(StringBuffer *.append(..))
hoping that would help things too. It didn't.

I am going to assume the worse, which is that I have miscoded this, and
this is simply a
case of 'smoke in the cockpit'. So any and all help is greatly appreciated.

Thanks in advance.
-Michael

2004-06-23 09:10                                                  Page 1


    1        // Listing 2.9 LogAndTraceAspect.java
    2
    3        import org.apache.log4j.*;
    4        import org.aspectj.lang.*;
    5        public aspect LogAndTraceAspect {
    6          private Logger logger = Logger.getLogger("trace");
    7
    8          LogAndTraceAspect() {
    9                    logger.setLevel(Level.ALL);
   10          }
   11
   12          pointcut traceMethods() :
   13                    (execution(* *.*(..)) || execution(*.new(..)))&&
!within(LogAndTraceAspect ||
java..* || javax..*);
   14
   15          before() : traceMethods() && !execution(String
*.toString())&&
!execution(StringBuffer StringBuffer.append(..)){
   16                    Signature sig =
thisJoinPointStaticPart.getSignature();
   17                    logger.log(Level.INFO, "Entering ["
   18                                                        +
sig.getDeclaringType().getName() + "."
   19                                                                    +
sig.getName() +"]"
   20                                                                    +
createParameterMsg(thisJoinPoint)
   21                                                                    );
   22          }
   23
   24          after() : traceMethods() {
   25                    logger.log(Level.INFO, "Exiting ["+ thisJoinPoint
+ "]");
   26          }
   27
   28          pointcut logMethodExceptions() :
   29                    call(* *.*(..)) && !within(LogAndTraceAspect);
   30
   31          after() throwing (Throwable t) : logMethodExceptions() {
   32                    if (logger.isEnabledFor(Level.ERROR)){
   33                                Signature sig =
thisJoinPointStaticPart.getSignature();
   34                                logger.log(Level.ERROR, "Exception
encountered ["
   35                                                        +
sig.getDeclaringType().getName() + "."
   36                                                        +
sig.getName() +"]", t);
   37                    }
   38          }
   39
   40          private String createParameterMsg(JoinPoint jp){
   41                    StringBuffer paramBuffer = new
StringBuffer("\n\t[This: ");
   42                    Object[] arguments = jp.getArgs();
   43                    paramBuffer.append(jp.getThis());
   44                    paramBuffer.append("]\n\t[Args: (");
   45                    for (int length = arguments.length, i=0;i <
length; ++i){
   46                                Object argument = arguments[i];
   47                                paramBuffer.append(argument);
   48                                if (i != length-1) {
   49                                            paramBuffer.append(',');
   50                                }
   51                    }
   52                    paramBuffer.append(")]");
   53                    return paramBuffer.toString();
   54          }
   55        }
   56






=====




__________________________________
Do you Yahoo!?
Yahoo! Mail Address AutoComplete - You start. We finish.
http://promotions.yahoo.com/new_mail
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
http://dev.eclipse.org/mailman/listinfo/aspectj-users




Back to the top