33import static org .assertj .core .api .Assertions .assertThat ;
44import static org .assertj .core .api .Assertions .assertThatThrownBy ;
55
6- import java .io .ByteArrayInputStream ;
7- import java .io .InputStream ;
8- import java .nio .charset .StandardCharsets ;
96import java .util .Map ;
107import java .util .Optional ;
8+ import java .util .Set ;
119import java .util .function .Supplier ;
12- import java .util .stream .Collectors ;
1310import javasabr .rlib .collections .array .ArrayFactory ;
1411import javasabr .rlib .collections .array .MutableArray ;
12+ import javasabr .rlib .common .util .ResourceClassLoader ;
1513import javasabr .rlib .logger .api .Logger ;
1614import javasabr .rlib .logger .api .LoggerLevel ;
1715import javasabr .rlib .logger .impl .DefaultLoggerService ;
1816import javasabr .rlib .logger .impl .config .LoggerConfig ;
1917import javasabr .rlib .logger .impl .config .consumer .impl .CustomLogMessageConsumer ;
20- import javasabr .rlib .logger .impl .config .render .LogMessageRender ;
21- import javasabr .rlib .logger .impl .config .render .impl .CustomLogMessageRender ;
22- import javasabr .rlib .logger .impl .config .render .impl .SimpleLogMessageRender ;
2318import javasabr .rlib .logger .impl .config .loader .json .dto .JsonLoggerConfigDto .ConsumerDto ;
2419import javasabr .rlib .logger .impl .config .loader .json .dto .JsonLoggerConfigDto .ConsumerType ;
2520import javasabr .rlib .logger .impl .config .loader .json .dto .JsonLoggerConfigDto .RenderDto ;
2621import javasabr .rlib .logger .impl .config .loader .json .dto .JsonLoggerConfigDto .RenderType ;
22+ import javasabr .rlib .logger .impl .config .render .LogMessageRender ;
23+ import javasabr .rlib .logger .impl .config .render .impl .CustomLogMessageRender ;
24+ import javasabr .rlib .logger .impl .config .render .impl .SimpleLogMessageRender ;
2725import lombok .AccessLevel ;
2826import lombok .experimental .FieldDefaults ;
2927import org .junit .jupiter .api .AfterEach ;
@@ -190,7 +188,9 @@ void shouldPreferTestJsonOverMainJson() {
190188 var loader = new JsonLoggerConfigLoader ();
191189 var contextClassLoader = new ResourceClassLoader (Map .of (
192190 JsonLoggerConfigLoader .FILE_TEST , buildRootOnlyConfigJson ("TRACE" ),
193- JsonLoggerConfigLoader .FILE_MAIN , buildRootOnlyConfigJson ("ERROR" )));
191+ JsonLoggerConfigLoader .FILE_MAIN , buildRootOnlyConfigJson ("ERROR" )), Set .of (
192+ JsonLoggerConfigLoader .FILE_TEST ,
193+ JsonLoggerConfigLoader .FILE_MAIN ));
194194
195195 // when:
196196 Optional <LoggerConfig > loadedConfig = withContextClassLoader (contextClassLoader , loader ::tryToLoad );
@@ -216,7 +216,9 @@ void shouldFallbackToMainJsonWhenTestMissing() {
216216 // given:
217217 var loader = new JsonLoggerConfigLoader ();
218218 var contextClassLoader = new ResourceClassLoader (Map .of (
219- JsonLoggerConfigLoader .FILE_MAIN , buildRootOnlyConfigJson ("ERROR" )));
219+ JsonLoggerConfigLoader .FILE_MAIN , buildRootOnlyConfigJson ("ERROR" )), Set .of (
220+ JsonLoggerConfigLoader .FILE_TEST ,
221+ JsonLoggerConfigLoader .FILE_MAIN ));
220222
221223 // when:
222224 Optional <LoggerConfig > loadedConfig = withContextClassLoader (contextClassLoader , loader ::tryToLoad );
@@ -241,7 +243,9 @@ void shouldFallbackToMainJsonWhenTestMissing() {
241243 void shouldReturnEmptyWhenNoJsonConfigFound () {
242244 // given:
243245 var loader = new JsonLoggerConfigLoader ();
244- var contextClassLoader = new ResourceClassLoader (Map .of ());
246+ var contextClassLoader = new ResourceClassLoader (Map .of (), Set .of (
247+ JsonLoggerConfigLoader .FILE_TEST ,
248+ JsonLoggerConfigLoader .FILE_MAIN ));
245249
246250 // when:
247251 Optional <LoggerConfig > loadedConfig = withContextClassLoader (contextClassLoader , loader ::tryToLoad );
@@ -255,7 +259,9 @@ void shouldThrowWhenJsonContentIsMalformed() {
255259 // given:
256260 var loader = new JsonLoggerConfigLoader ();
257261 var contextClassLoader = new ResourceClassLoader (Map .of (
258- JsonLoggerConfigLoader .FILE_TEST , "{ malformed-json" ));
262+ JsonLoggerConfigLoader .FILE_TEST , "{ malformed-json" ), Set .of (
263+ JsonLoggerConfigLoader .FILE_TEST ,
264+ JsonLoggerConfigLoader .FILE_MAIN ));
259265
260266 // when/then:
261267 assertThatThrownBy (() -> withContextClassLoader (contextClassLoader , loader ::tryToLoad ))
@@ -273,7 +279,9 @@ void shouldThrowWhenConsumerReferencesUnknownRender() {
273279 "consumers": [{"name":"consumer1","type":"CONSOLE","render":"unknown-render"}],
274280 "loggers": [{"name":"ROOT","level":"INFO","consumers":["consumer1"]}]
275281 }
276- """ ));
282+ """ ), Set .of (
283+ JsonLoggerConfigLoader .FILE_TEST ,
284+ JsonLoggerConfigLoader .FILE_MAIN ));
277285
278286 // when/then:
279287 assertThatThrownBy (() -> withContextClassLoader (contextClassLoader , loader ::tryToLoad ))
@@ -290,7 +298,9 @@ void shouldThrowWhenCustomRenderClassIsMissing() {
290298 {
291299 "renders": [{"name":"render1","type":"CUSTOM"}]
292300 }
293- """ ));
301+ """ ), Set .of (
302+ JsonLoggerConfigLoader .FILE_TEST ,
303+ JsonLoggerConfigLoader .FILE_MAIN ));
294304
295305 // when/then:
296306 assertThatThrownBy (() -> withContextClassLoader (contextClassLoader , loader ::tryToLoad ))
@@ -308,7 +318,9 @@ void shouldThrowWhenCustomConsumerClassIsMissing() {
308318 "renders": [{"name":"render1","type":"SIMPLE"}],
309319 "consumers": [{"name":"consumer1","type":"CUSTOM","render":"render1"}]
310320 }
311- """ ));
321+ """ ), Set .of (
322+ JsonLoggerConfigLoader .FILE_TEST ,
323+ JsonLoggerConfigLoader .FILE_MAIN ));
312324
313325 // when/then:
314326 assertThatThrownBy (() -> withContextClassLoader (contextClassLoader , loader ::tryToLoad ))
@@ -402,33 +414,4 @@ private static <T> T withContextClassLoader(ClassLoader contextClassLoader, Supp
402414 currentThread .setContextClassLoader (previousClassLoader );
403415 }
404416 }
405-
406- private static class ResourceClassLoader extends ClassLoader {
407-
408- private final Map <String , byte []> resources ;
409-
410- private ResourceClassLoader (Map <String , String > resources ) {
411- super (Thread
412- .currentThread ()
413- .getContextClassLoader ());
414- this .resources = resources
415- .entrySet ()
416- .stream ()
417- .collect (Collectors .toUnmodifiableMap (
418- Map .Entry ::getKey ,
419- entry -> entry .getValue ().getBytes (StandardCharsets .UTF_8 )));
420- }
421-
422- @ Override
423- public InputStream getResourceAsStream (String name ) {
424- byte [] loaded = resources .get (name );
425- if (loaded != null ) {
426- return new ByteArrayInputStream (loaded );
427- }
428- if (JsonLoggerConfigLoader .FILE_TEST .equals (name ) || JsonLoggerConfigLoader .FILE_MAIN .equals (name )) {
429- return null ;
430- }
431- return super .getResourceAsStream (name );
432- }
433- }
434417}
0 commit comments