File tree Expand file tree Collapse file tree
logback-classic-blackbox/src/test
blackboxInput/joran/conditional
java/ch/qos/logback/classic/blackbox/joran
logback-core/src/main/java/ch/qos/logback/core/model/processor Expand file tree Collapse file tree Original file line number Diff line number Diff line change 55 <include optional =" true" resource =" missing.xml" />
66 </then >
77 <else >
8- <include resource =" src/test/input /joran/collision/included .xml" />
8+ <include file =" src/test/blackboxInput /joran/conditional/includedConditionalWithAppenderInclusion .xml" />
99 </else >
1010 </if >
1111</configuration >
Original file line number Diff line number Diff line change 2424import ch .qos .logback .classic .spi .ILoggingEvent ;
2525import ch .qos .logback .classic .util .DefaultJoranConfigurator ;
2626import ch .qos .logback .classic .util .LogbackMDCAdapter ;
27+ import ch .qos .logback .core .Appender ;
2728import ch .qos .logback .core .joran .spi .JoranException ;
2829import ch .qos .logback .core .read .ListAppender ;
2930import ch .qos .logback .core .testUtil .RandomUtil ;
@@ -133,6 +134,19 @@ public void conditional1673bisWithActiveThen() throws JoranException {
133134 assertNull (listElse );
134135 }
135136
137+ // See also https://github.com/qos-ch/logback/issues/1016
138+ @ Test
139+ public void conditionalWithAppenderInclusion () throws JoranException {
140+ String configFileAsStr = BlackboxClassicTestConstants .JORAN_INPUT_PREFIX + "conditional/topConditionalWithAppenderInclusion.xml" ;
141+ configure (configFileAsStr );
142+ Logger root = loggerContext .getLogger (Logger .ROOT_LOGGER_NAME );
143+ Appender <ILoggingEvent > appender = root .getAppender ("MISSING" );
144+ assertNull (appender );
145+
146+ ListAppender <ILoggingEvent > listElse = (ListAppender <ILoggingEvent >) root .getAppender ("LIST" );
147+ assertNotNull (listElse );
148+ }
149+
136150 @ Test
137151 public void conditional1673bisWithActiveElse () throws JoranException {
138152 String configFileAsStr = BlackboxClassicTestConstants .JORAN_INPUT_PREFIX + "issues/logback_1673bis.xml" ;
Original file line number Diff line number Diff line change @@ -36,16 +36,26 @@ protected Class<Model> getSupportedModelClass() {
3636 @ Override
3737 public void handle (ModelInterpretationContext mic , Model parentModel ) throws ModelHandlerException {
3838
39- List < AppenderRefModel > appenderRefModels =
40- parentModel . getSubModels (). stream (). filter ( m -> m instanceof AppenderRefModel ). map ( m -> ( AppenderRefModel ) m ). collect ( Collectors . toList () );
39+ System . out . println ( "Handling " + parentModel );
40+ List < AppenderRefModel > appenderRefModelList = new java . util . ArrayList <>( );
4141
42+ getAllAppenderRefModels (appenderRefModelList , parentModel );
4243
43- for (AppenderRefModel appenderRefModel : appenderRefModels ) {
44+ for (AppenderRefModel appenderRefModel : appenderRefModelList ) {
4445 String ref = mic .subst (appenderRefModel .getRef ());
4546 DependencyDefinition dd = new DependencyDefinition (parentModel , ref );
4647 mic .addDependencyDefinition (dd );
4748 }
4849
4950 }
5051
52+ public void getAllAppenderRefModels (List <AppenderRefModel > list , Model model ) {
53+ if (model == null )
54+ return ;
55+ if (model instanceof AppenderRefModel ) {
56+ list .add ((AppenderRefModel ) model );
57+ }
58+ model .getSubModels ().forEach (subModel -> getAllAppenderRefModels (list , subModel ));
59+ }
60+
5161}
Original file line number Diff line number Diff line change 2626 */
2727public class DependencyDefinition {
2828
29- // OLD terminology: depender: a component of type Model which depends on a dependee
30- // NEW terminology: dependent: a component of type Model which depends on a dependency
29+ // OLD terminology: dependee (=dependency), dependent(=depender)
30+ //
31+ // NEW terminology: *dependent*: a component of type Model which depends on a *dependency*
3132 Model depender ;
3233 // dependee or dependency: the string name of a component depended upon by the depender of type Model
3334 String dependency ;
You can’t perform that action at this time.
0 commit comments