[prev in list] [next in list] [prev in thread] [next in thread]
List: groovy-scm
Subject: [groovy-scm] [scm-git][2/8] GROOVY-6373: 'log' field introduced via @Slf4j not accessible in inner c
From: Paul King <git () codehaus ! org>
Date: 2014-05-31 20:56:40
Message-ID: 20140531205640.099C0B10BA () codehaus01 ! managed ! contegix ! com
[Download RAW message or body]
commit 8b810509fb50da99f50ef05ab93d0b736fd02d35
Author: Paul King <paulk@asert.com.au>
AuthorDate: Wed, 28 May 2014 13:57:02 +1000
Commit: Paul King <paulk@asert.com.au>
CommitDate: Wed, 28 May 2014 13:57:02 +1000
GROOVY-6373: 'log' field introduced via @Slf4j not accessible in inner class of \
@CompileStatic class
diff --git a/src/main/org/codehaus/groovy/transform/LogASTTransformation.java \
b/src/main/org/codehaus/groovy/transform/LogASTTransformation.java index \
bc4b51d..a73434e 100644
--- a/src/main/org/codehaus/groovy/transform/LogASTTransformation.java
+++ b/src/main/org/codehaus/groovy/transform/LogASTTransformation.java
@@ -156,14 +156,8 @@ public class LogASTTransformation extends \
AbstractASTTransformation implements C };
transformer.visitClass(classNode);
- // TODO can we replace GROOOVY-6373 fix with something simpler? breaks tests \
ATM
- // new VariableScopeVisitor(sourceUnit, true).visitClass(classNode);
- // GROOVY-6373: added log field is already a field node in inner classes by \
now
- VariableScopeVisitor scopeVisitor = new VariableScopeVisitor(sourceUnit, \
true);
- Iterator<InnerClassNode> innerClasses = classNode.getInnerClasses();
- while (innerClasses.hasNext()) {
- scopeVisitor.visitClass(innerClasses.next());
- }
+ // GROOVY-6373: references to 'log' field are normally already FieldNodes by \
now, so revisit scoping + new VariableScopeVisitor(sourceUnit, \
true).visitClass(classNode); }
private String lookupLogFieldName(AnnotationNode logAnnotation) {
diff --git a/src/test/groovy/util/logging/CommonsTest.groovy \
b/src/test/groovy/util/logging/CommonsTest.groovy index abbbb09..a211b89 100644
--- a/src/test/groovy/util/logging/CommonsTest.groovy
+++ b/src/test/groovy/util/logging/CommonsTest.groovy
@@ -152,13 +152,20 @@ class CommonsTest extends GroovyTestCase {
@groovy.util.logging.Commons
class MyClass {
boolean traceCalled = false
- MyClass() {
- log = new LogDecorator().wrap(log) as \
org.apache.commons.logging.Log
- }
def loggingMethod() {
+ overrideLog()
log.trace (traceCalled = true)
}
+
+ def overrideLog() {
+ def field = MyClass.getDeclaredField('log')
+ field.accessible = true
+ def modifiersField = \
java.lang.reflect.Field.getDeclaredField("modifiers") + \
modifiersField.accessible = true + modifiersField.setInt(field, \
field.modifiers & ~java.lang.reflect.Modifier.FINAL) + \
field.set(null, new LogDecorator().wrap(log) as org.apache.commons.logging.Log) + \
} }
def o = new MyClass()
o.loggingMethod()
[Attachment #3 (text/html)]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" \
"http://www.w3.org/TR/REC-html40/loose.dtd"> <html style="font-size: 12px;">
<head><meta http-equiv="Content-type" content="text/html; charset=utf-8"></head>
<body style="font-size: 12px;">
<style type="text/css">
dt:after { content: ':' !important; }
> </style>
<dl class="title" style="font-size: 12px; font-family: Verdana; background-color: \
#ddd; padding: 10px;"> <dt style="font-size: 12px; float: left; font-weight: bold; \
min-width: 6em;">Commit</dt> <dd style="font-size: \
12px;">8b810509fb50da99f50ef05ab93d0b736fd02d35</dd> <dt style="font-size: 12px; \
float: left; font-weight: bold; min-width: 6em;">Branch</dt> <dd style="font-size: \
12px;">master</dd> <dt style="font-size: 12px; float: left; font-weight: bold; \
min-width: 6em;">Author</dt> <dd style="font-size: 12px;">Paul King \
<paulk@asert.com.au></dd> <dt style="font-size: 12px; float: left; font-weight: \
bold; min-width: 6em;">Date</dt> <dd style="font-size: 12px;">Wed, 28 May 2014 \
13:57:02 +1000</dd> <dt style="font-size: 12px; float: left; font-weight: bold; \
min-width: 6em;">Message</dt> <dd class="" style="font-size: 12px;">GROOVY-6373: \
'log' field introduced via @Slf4j not accessible in inner class of @CompileStatic \
class</dd> </dl>
<h2 id="src/main/org/codehaus/groovy/transform/LogASTTransformation.java" \
style="font-size: 12px; font-family: Verdana; font-weight: bold; line-height: 25px; \
margin-bottom: 2px; padding-left: 5px; background-color: #bbb;">Changed file \
src/main/org/codehaus/groovy/transform/LogASTTransformation.java</h2>
<table style="font-size: 12px; width: 100%; border-collapse: collapse;">
<tr style="font-size: 12px;">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">156</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">156</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> };</td> \
</tr> <tr style="font-size: 12px;">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">157</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">157</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> \
transformer.visitClass(classNode);</td> </tr>
<tr style="font-size: 12px;">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">158</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">158</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> </td> </tr>
<tr class="r" style="font-size: 12px; background-color: #fdd;" bgcolor="#fdd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">159</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc"></td> <td style="font-size: 12px; color: #000; font-family: 'Bitstream \
Vera Sans Mono','Monaco','Courier',monospace;"> // TODO can we \
replace GROOOVY-6373 fix with something simpler? breaks tests ATM</td> </tr>
<tr class="r" style="font-size: 12px; background-color: #fdd;" bgcolor="#fdd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">160</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc"></td> <td style="font-size: 12px; color: #000; font-family: 'Bitstream \
Vera Sans Mono','Monaco','Courier',monospace;"> // new \
VariableScopeVisitor(sourceUnit, true).visitClass(classNode);</td> </tr>
<tr class="r" style="font-size: 12px; background-color: #fdd;" bgcolor="#fdd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">161</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc"></td> <td style="font-size: 12px; color: #000; font-family: 'Bitstream \
Vera Sans Mono','Monaco','Courier',monospace;"> // GROOVY-6373: \
added log field is already a field node in inner classes by now</td> \
</tr> <tr class="r" style="font-size: 12px; background-color: #fdd;" bgcolor="#fdd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">162</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc"></td> <td style="font-size: 12px; color: #000; font-family: 'Bitstream \
Vera Sans Mono','Monaco','Courier',monospace;"> VariableScopeVisitor \
scopeVisitor = new VariableScopeVisitor(sourceUnit, true);</td> </tr>
<tr class="r" style="font-size: 12px; background-color: #fdd;" bgcolor="#fdd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">163</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc"></td> <td style="font-size: 12px; color: #000; font-family: 'Bitstream \
Vera Sans Mono','Monaco','Courier',monospace;"> \
Iterator<InnerClassNode> innerClasses = classNode.getInnerClasses();</td> \
</tr> <tr class="r" style="font-size: 12px; background-color: #fdd;" bgcolor="#fdd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">164</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc"></td> <td style="font-size: 12px; color: #000; font-family: 'Bitstream \
Vera Sans Mono','Monaco','Courier',monospace;"> while \
(innerClasses.hasNext()) {</td> </tr>
<tr class="r" style="font-size: 12px; background-color: #fdd;" bgcolor="#fdd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">165</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc"></td> <td style="font-size: 12px; color: #000; font-family: 'Bitstream \
Vera Sans Mono','Monaco','Courier',monospace;"> \
scopeVisitor.visitClass(innerClasses.next());</td> </tr>
<tr class="r" style="font-size: 12px; background-color: #fdd;" bgcolor="#fdd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">166</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc"></td> <td style="font-size: 12px; color: #000; font-family: 'Bitstream \
Vera Sans Mono','Monaco','Courier',monospace;"> }</td> </tr>
<tr class="a" style="font-size: 12px; background-color: #dfd;" bgcolor="#dfd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc"></td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">159</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> // \
GROOVY-6373: references to 'log' field are normally already FieldNodes by \
now, so revisit scoping</td> </tr>
<tr class="a" style="font-size: 12px; background-color: #dfd;" bgcolor="#dfd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc"></td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">160</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> new \
VariableScopeVisitor(sourceUnit, true).visitClass(classNode);</td> </tr>
<tr style="font-size: 12px;">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">167</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">161</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> }</td> </tr>
<tr style="font-size: 12px;">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">168</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">162</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> </td> </tr>
<tr style="font-size: 12px;">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">169</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">163</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> private String \
lookupLogFieldName(AnnotationNode logAnnotation) {</td> </tr>
</table>
<h2 id="src/test/groovy/util/logging/CommonsTest.groovy" style="font-size: 12px; \
font-family: Verdana; font-weight: bold; line-height: 25px; margin-bottom: 2px; \
padding-left: 5px; background-color: #bbb;">Changed file \
src/test/groovy/util/logging/CommonsTest.groovy</h2>
<table style="font-size: 12px; width: 100%; border-collapse: collapse;">
<tr style="font-size: 12px;">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">152</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">152</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> \
@groovy.util.logging.Commons</td> </tr>
<tr style="font-size: 12px;">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">153</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">153</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> \
class MyClass {</td> </tr>
<tr style="font-size: 12px;">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">154</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">154</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> \
boolean traceCalled = false</td> </tr>
<tr class="r" style="font-size: 12px; background-color: #fdd;" bgcolor="#fdd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">155</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc"></td> <td style="font-size: 12px; color: #000; font-family: 'Bitstream \
Vera Sans Mono','Monaco','Courier',monospace;"> \
MyClass() {</td> </tr>
<tr class="r" style="font-size: 12px; background-color: #fdd;" bgcolor="#fdd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">156</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc"></td> <td style="font-size: 12px; color: #000; font-family: 'Bitstream \
Vera Sans Mono','Monaco','Courier',monospace;"> \
log = new LogDecorator().wrap(log) as org.apache.commons.logging.Log</td> </tr>
<tr class="r" style="font-size: 12px; background-color: #fdd;" bgcolor="#fdd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">157</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc"></td> <td style="font-size: 12px; color: #000; font-family: 'Bitstream \
Vera Sans Mono','Monaco','Courier',monospace;"> \
}</td> </tr>
<tr style="font-size: 12px;">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">158</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">155</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> </td> </tr>
<tr style="font-size: 12px;">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">159</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">156</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> \
def loggingMethod() {</td> </tr>
<tr class="a" style="font-size: 12px; background-color: #dfd;" bgcolor="#dfd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc"></td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">157</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> \
overrideLog()</td> </tr>
<tr style="font-size: 12px;">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">160</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">158</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> \
log.trace (traceCalled = true)</td> </tr>
<tr style="font-size: 12px;">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">161</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">159</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> \
}</td> </tr>
<tr class="a" style="font-size: 12px; background-color: #dfd;" bgcolor="#dfd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc"></td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">160</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> </td> </tr>
<tr class="a" style="font-size: 12px; background-color: #dfd;" bgcolor="#dfd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc"></td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">161</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> \
def overrideLog() {</td> </tr>
<tr class="a" style="font-size: 12px; background-color: #dfd;" bgcolor="#dfd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc"></td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">162</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> \
def field = MyClass.getDeclaredField('log')</td> </tr>
<tr class="a" style="font-size: 12px; background-color: #dfd;" bgcolor="#dfd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc"></td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">163</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> \
field.accessible = true</td> </tr>
<tr class="a" style="font-size: 12px; background-color: #dfd;" bgcolor="#dfd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc"></td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">164</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> \
def modifiersField = java.lang.reflect.Field.getDeclaredField("modifiers")</td> \
</tr> <tr class="a" style="font-size: 12px; background-color: #dfd;" bgcolor="#dfd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc"></td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">165</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> \
modifiersField.accessible = true</td> </tr>
<tr class="a" style="font-size: 12px; background-color: #dfd;" bgcolor="#dfd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc"></td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">166</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> \
modifiersField.setInt(field, field.modifiers & \
~java.lang.reflect.Modifier.FINAL)</td> </tr>
<tr class="a" style="font-size: 12px; background-color: #dfd;" bgcolor="#dfd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc"></td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">167</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> \
field.set(null, new LogDecorator().wrap(log) as \
org.apache.commons.logging.Log)</td> </tr>
<tr class="a" style="font-size: 12px; background-color: #dfd;" bgcolor="#dfd">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc"></td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">168</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> \
}</td> </tr>
<tr style="font-size: 12px;">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">162</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">169</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> \
}</td> </tr>
<tr style="font-size: 12px;">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">163</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">170</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> \
def o = new MyClass()</td> </tr>
<tr style="font-size: 12px;">
<td class="ln" style="font-size: 12px; color: #000; font-family: 'Bitstream Vera Sans \
Mono','Monaco','Courier',monospace; width: 23px; text-align: right; background-color: \
#ccc;" align="right" bgcolor="#ccc">164</td> <td class="ln" style="font-size: 12px; \
color: #000; font-family: 'Bitstream Vera Sans Mono','Monaco','Courier',monospace; \
width: 23px; text-align: right; background-color: #ccc;" align="right" \
bgcolor="#ccc">171</td> <td style="font-size: 12px; color: #000; font-family: \
'Bitstream Vera Sans Mono','Monaco','Courier',monospace;"> \
o.loggingMethod()</td> </tr>
</table>
<br style="font-size: 12px;"><br style="font-size: 12px;">
</body>
</html>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic