whitlock    2002/10/30 09:43:38

  Modified:    java/src/org/apache/wsif/logging Trc.java
  Log:
  Fix calculation of method names
  
  Revision  Changes    Path
  1.9       +39 -23    xml-axis-wsif/java/src/org/apache/wsif/logging/Trc.java
  
  Index: Trc.java
  ===================================================================
  RCS file: /home/cvs/xml-axis-wsif/java/src/org/apache/wsif/logging/Trc.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Trc.java  29 Oct 2002 16:52:07 -0000      1.8
  +++ Trc.java  30 Oct 2002 17:43:38 -0000      1.9
  @@ -1120,22 +1120,23 @@
           PrintWriter pw = new PrintWriter(sw);
           e.printStackTrace(pw);
           String stack = sw.getBuffer().toString();
  -        if (traceTrace) traceLog.debug("TRACE stack="+stack);
  +        
  +        if (traceTrace)
  +            traceLog.debug("TRACE stack=" + stack);
   
           // The next while loop tries to find the method that called
  -        // Trc. The method name will have (...parmeters...) after it
  -        // and will be after the last call to Trc. 
  -        StringTokenizer st1 = new StringTokenizer(stack);
  +        // Trc. The line with the method name will be after the last 
  +        // call to Trc. 
  +        StringTokenizer st1 =
  +            new StringTokenizer(
  +                stack,
  +                System.getProperty("line.separator", "\n"));
           boolean foundWsifLogging = false;
  -        String tok = null;
  +        String tok1 = null;
           while (st1.hasMoreTokens()) {
  -            tok = st1.nextToken();
  -            if (traceTrace) traceLog.debug("TRACE token="+tok);
  -            
  -            if (tok.indexOf("(") == -1)
  -                continue;
  +            tok1 = st1.nextToken();
   
  -            if (tok.startsWith(wsifPackageName + ".logging")) {
  +            if (tok1.indexOf(wsifPackageName + ".logging") != -1) {
                   foundWsifLogging = true;
                   continue;
               }
  @@ -1143,7 +1144,21 @@
               if (foundWsifLogging)
                   break;
           }
  -        if (traceTrace) traceLog.debug("TRACE broken out token="+tok);
  +        if (traceTrace)
  +            traceLog.debug("TRACE token=" + tok1);
  +
  +        // Now find the first word which contains a (. This should be 
  +        // prefixed by the method name. If there isn't a (, which 
  +        // is unlikely, use the whole line.
  +        StringTokenizer st2 = new StringTokenizer(tok1);
  +        String tok2 = null;
  +        while (st2.hasMoreTokens()) {
  +            tok2 = st2.nextToken();
  +            if (tok2.indexOf("(") != -1)
  +                break;
  +        }
  +        if (tok2.indexOf("(") == -1)
  +            tok2 = tok1;
   
           // Indent the method name by the number of WSIF calls 
           // higher up the stack. This improves readability. There
  @@ -1151,17 +1166,18 @@
           // but this seemed the most reliable (and simplest).
           buff.append(" ");
           while (st1.hasMoreTokens()) {
  -            if (st1.nextToken().startsWith(wsifPackageName))
  +            if (st1.nextToken().indexOf(wsifPackageName) != -1)
                   buff.append(" ");
           }
   
           // Strip off the (... parameters...). I expect there will
           // always be a ( in the token, but this code copes even if 
           // there isn't.
  -        int idx = tok.indexOf("(");
  +        int idx = tok2.indexOf("(");
           if (idx != -1)
  -            tok = tok.substring(0, idx);
  -        if (traceTrace) traceLog.debug("TRACE token="+tok);
  +            tok2 = tok2.substring(0, idx);
  +        if (traceTrace)
  +            traceLog.debug("TRACE token=" + tok2);
   
           // Now strip off the WSIF package name off the front of 
           // the class name. All WSIF class names are unique, so 
  @@ -1170,20 +1186,20 @@
           // WSIF (unlikely) then output the whole 
           // packagename.classname.methodname.
           String result = null;
  -        if (tok.startsWith(wsifPackageName)) {
  -            StringTokenizer st2 = new StringTokenizer(tok, ".");
  +        if (tok2.startsWith(wsifPackageName)) {
  +            StringTokenizer st3 = new StringTokenizer(tok2, ".");
               String previous = null;
  -            while (st2.hasMoreTokens()) {
  +            while (st3.hasMoreTokens()) {
                   previous = result;
  -                result = st2.nextToken();
  -                if (traceTrace) traceLog.debug("TRACE result="+result);
  +                result = st3.nextToken();
               }
               if (previous != null)
                   result = previous + "." + result;
           } else
  -            result = tok;
  +            result = tok2;
   
  -        if (traceTrace) traceLog.debug("TRACE appending result="+result);
  +        if (traceTrace)
  +            traceLog.debug("TRACE appending result=" + result);
           buff.append(result);
       }
           
  
  
  


Reply via email to