Skip to content

Commit 0385c4b

Browse files
committed
ongoing work on LOGBACK-1164 - bridge methods
1 parent 0d9808f commit 0385c4b

File tree

6 files changed

+45
-17
lines changed

6 files changed

+45
-17
lines changed

logback-core/src/main/java/ch/qos/logback/core/joran/GenericConfigurator.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
public abstract class GenericConfigurator extends ContextAwareBase {
3838

39-
private final BeanDescriptionCache beanDescriptionCache = new BeanDescriptionCache();
39+
private BeanDescriptionCache beanDescriptionCache;
4040

4141
protected Interpreter interpreter;
4242

@@ -104,6 +104,9 @@ public final void doConfigure(InputStream inputStream) throws JoranException {
104104
}
105105

106106
protected BeanDescriptionCache getBeanDescriptionCache() {
107+
if (beanDescriptionCache == null) {
108+
beanDescriptionCache = new BeanDescriptionCache(getContext());
109+
}
107110
return beanDescriptionCache;
108111
}
109112

logback-core/src/main/java/ch/qos/logback/core/joran/util/beans/BeanDescriptionCache.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.HashMap;
44
import java.util.Map;
55

6+
import ch.qos.logback.core.Context;
67
import ch.qos.logback.core.spi.ContextAwareBase;
78

89
/**
@@ -21,6 +22,10 @@ public class BeanDescriptionCache extends ContextAwareBase {
2122
private Map<Class<?>, BeanDescription> classToBeanDescription = new HashMap<Class<?>, BeanDescription>();
2223
private BeanDescriptionFactory beanDescriptionFactory;
2324

25+
public BeanDescriptionCache(Context context) {
26+
setContext(context);
27+
}
28+
2429
private BeanDescriptionFactory getBeanDescriptionFactory() {
2530
if (beanDescriptionFactory == null) {
2631
beanDescriptionFactory = new BeanDescriptionFactory(getContext());

logback-core/src/test/java/ch/qos/logback/core/joran/SimpleConfigurator.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,11 @@
1616
import java.util.HashMap;
1717

1818
import ch.qos.logback.core.joran.action.Action;
19-
import ch.qos.logback.core.joran.action.NestedComplexPropertyIA;
2019
import ch.qos.logback.core.joran.action.NestedBasicPropertyIA;
21-
import ch.qos.logback.core.joran.spi.Interpreter;
20+
import ch.qos.logback.core.joran.action.NestedComplexPropertyIA;
2221
import ch.qos.logback.core.joran.spi.ElementSelector;
22+
import ch.qos.logback.core.joran.spi.Interpreter;
2323
import ch.qos.logback.core.joran.spi.RuleStore;
24-
import ch.qos.logback.core.joran.util.beans.BeanDescriptionCache;
2524

2625
public class SimpleConfigurator extends GenericConfigurator {
2726

@@ -33,11 +32,11 @@ public SimpleConfigurator(HashMap<ElementSelector, Action> rules) {
3332

3433
@Override
3534
protected void addImplicitRules(Interpreter interpreter) {
36-
NestedComplexPropertyIA nestedIA = new NestedComplexPropertyIA(new BeanDescriptionCache());
35+
NestedComplexPropertyIA nestedIA = new NestedComplexPropertyIA(getBeanDescriptionCache());
3736
nestedIA.setContext(context);
3837
interpreter.addImplicitAction(nestedIA);
3938

40-
NestedBasicPropertyIA nestedSimpleIA = new NestedBasicPropertyIA(new BeanDescriptionCache());
39+
NestedBasicPropertyIA nestedSimpleIA = new NestedBasicPropertyIA(getBeanDescriptionCache());
4140
nestedSimpleIA.setContext(context);
4241
interpreter.addImplicitAction(nestedSimpleIA);
4342
}

logback-core/src/test/java/ch/qos/logback/core/joran/replay/FruitConfigurator.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,14 @@
1717

1818
import ch.qos.logback.core.joran.GenericConfigurator;
1919
import ch.qos.logback.core.joran.action.NOPAction;
20-
import ch.qos.logback.core.joran.action.NestedComplexPropertyIA;
2120
import ch.qos.logback.core.joran.action.NestedBasicPropertyIA;
21+
import ch.qos.logback.core.joran.action.NestedComplexPropertyIA;
2222
import ch.qos.logback.core.joran.event.SaxEvent;
23+
import ch.qos.logback.core.joran.spi.ElementSelector;
2324
import ch.qos.logback.core.joran.spi.EventPlayer;
2425
import ch.qos.logback.core.joran.spi.Interpreter;
2526
import ch.qos.logback.core.joran.spi.JoranException;
26-
import ch.qos.logback.core.joran.spi.ElementSelector;
2727
import ch.qos.logback.core.joran.spi.RuleStore;
28-
import ch.qos.logback.core.joran.util.beans.BeanDescriptionCache;
2928

3029
public class FruitConfigurator extends GenericConfigurator {
3130

@@ -45,12 +44,11 @@ final public void doConfigure(final List<SaxEvent> eventList) throws JoranExcept
4544

4645
@Override
4746
protected void addImplicitRules(Interpreter interpreter) {
48-
BeanDescriptionCache beanDescriptionCache=new BeanDescriptionCache();
49-
NestedComplexPropertyIA nestedIA = new NestedComplexPropertyIA(beanDescriptionCache);
47+
NestedComplexPropertyIA nestedIA = new NestedComplexPropertyIA(getBeanDescriptionCache());
5048
nestedIA.setContext(context);
5149
interpreter.addImplicitAction(nestedIA);
5250

53-
NestedBasicPropertyIA nestedSimpleIA = new NestedBasicPropertyIA(beanDescriptionCache);
51+
NestedBasicPropertyIA nestedSimpleIA = new NestedBasicPropertyIA(getBeanDescriptionCache());
5452
nestedIA.setContext(context);
5553
interpreter.addImplicitAction(nestedSimpleIA);
5654
}

logback-core/src/test/java/ch/qos/logback/core/joran/util/House.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,13 @@ public class House {
4141
List<Window> windowList = new ArrayList<Window>();
4242
List<SwimmingPool> largePoolList = new ArrayList<SwimmingPool>();
4343

44+
Orange orange;
45+
4446
public String getCamelCase() {
4547
return camelCase;
4648
}
4749

50+
4851
public void setCamelCase(String camelCase) {
4952
this.camelCase = camelCase;
5053
}
@@ -150,6 +153,10 @@ public Charset getCharset() {
150153
public void setCharset(Charset charset) {
151154
this.charset = charset;
152155
}
156+
157+
public void setOrange(Orange o) {
158+
this.orange = o;
159+
}
153160
}
154161

155162
class Door {
@@ -177,4 +184,4 @@ class LargeSwimmingPoolImpl implements SwimmingPool {
177184

178185
enum HouseColor {
179186
WHITE, BLUE
180-
}
187+
}

logback-core/src/test/java/ch/qos/logback/core/joran/util/PropertySetterTest.java

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.nio.charset.Charset;
2323
import java.nio.charset.UnsupportedCharsetException;
2424

25+
import org.junit.After;
2526
import org.junit.Before;
2627
import org.junit.Test;
2728

@@ -32,18 +33,25 @@
3233
import ch.qos.logback.core.spi.FilterReply;
3334
import ch.qos.logback.core.status.StatusChecker;
3435
import ch.qos.logback.core.util.AggregationType;
36+
import ch.qos.logback.core.util.StatusPrinter;
3537

3638
public class PropertySetterTest {
3739

3840
DefaultNestedComponentRegistry defaultComponentRegistry = new DefaultNestedComponentRegistry();
3941

4042
Context context = new ContextBase();
4143
House house = new House();
42-
PropertySetter setter = new PropertySetter(new BeanDescriptionCache(),house);
44+
45+
PropertySetter setter; // = new PropertySetter(new BeanDescriptionCache(context), basket);
4346

4447
@Before
4548
public void setUp() {
46-
setter.setContext(context);
49+
//setter.setContext(context);
50+
}
51+
52+
@After
53+
public void tearDown() {
54+
StatusPrinter.print(context);
4755
}
4856

4957
@Test
@@ -73,7 +81,7 @@ public void testCanAggregateComponent() {
7381
public void testSetProperty() {
7482
{
7583
House house = new House();
76-
PropertySetter setter = new PropertySetter(new BeanDescriptionCache(),house);
84+
PropertySetter setter = new PropertySetter(new BeanDescriptionCache(context), house);
7785
setter.setProperty("count", "10");
7886
setter.setProperty("temperature", "33.1");
7987

@@ -88,7 +96,7 @@ public void testSetProperty() {
8896

8997
{
9098
House house = new House();
91-
PropertySetter setter = new PropertySetter(new BeanDescriptionCache(),house);
99+
PropertySetter setter = new PropertySetter(new BeanDescriptionCache(context), house);
92100
setter.setProperty("Count", "10");
93101
setter.setProperty("Name", "jack");
94102
setter.setProperty("Open", "true");
@@ -218,4 +226,12 @@ public void charset() {
218226
StatusChecker checker = new StatusChecker(context);
219227
checker.containsException(UnsupportedCharsetException.class);
220228
}
229+
230+
// see also http://jira.qos.ch/browse/LOGBACK-1164
231+
@Test
232+
public void bridgeMethodsShouldBeIgnored() {
233+
FruitBasket fruitBasket = new FruitBasket();
234+
PropertySetter fruitBasketSetter = new PropertySetter(new BeanDescriptionCache(context), fruitBasket);
235+
fruitBasketSetter.computeAggregationType("orange");
236+
}
221237
}

0 commit comments

Comments
 (0)