{"push_id":1134360656,"size":16,"distinct_size":16,"ref":"refs/heads/gh-6030","head":"a6fd7eb0ec82342db607f3ca766f027a5e947d13","before":"46c06be8dfa25df33ec88dd83f6fc205c63bb83e","commits":[{"sha":"a5ad2b33ab9cf443efb52c9b36562c2100616b53","author":{"name":"Andy Wilkinson","email":"29af540e206d9a4441e1a4f30f14dd7c1d669027@pivotal.io"},"message":"Enable JNDI lookups during app context refresh without changing TCCL\n\nWhen Tomcat is starting up and JNDI is enabled, it binds the web app\nclass loader into its ContextBindings, thereby enabling JNDI lookups\non any thread that uses the web app class loader as its thread context\nclass loader. When Boot starts an application, the application context\nis refreshed on the main thread which has the app class loader as its\nTCCL. This meant that any JNDI lookups performed during refresh would\nfail.\n\ngh-2038 described this problem and a fix was made in ff99bb0. The\nfix was to set the main thread's TCCL to be Tomcat's web app class\nloader. This fixed the JNDI lookup problem, but it has become apparent\nthat it has caused other problems when testing an application.\n\nThe fix for gh-2038 sets the main thread's TCCL when embedded Tomcat\nstarts (during application context refresh) and then restores it when\nembedded Tomcat stops (as a result of the application context being\nclosed). This causes problems during testing as, when application\ncontext's are cached, the close is delayed. This means that the main\nthread's TCCL isn't restored, causing subsequent tests to run with the\nwrong TCCL.\n\nThis commit takes a different approach to fixing gh-2038. Rather than\nchanging the main thread's TCCL, it binds the app class loader into\nTomcat's ContextBindings, thereby enabling JNDI lookups from the main\nthread. To avoid leaving a reference to the app class loader in\nTomcat's ContextBindings, it unbinds the app class loader at the end\nof application context refresh. This narrows the scope of the fix so\nthat it only applies during application context refresh which is the\nperiod in which JNDI lookups were problematic.\n\nNote that the original fix could have been modified to restore the\nTCCL once context refresh has completed rather than waiting for the\ncontext to be closed. However, my feeling is that leaving the TCCL\nunchanged and specifically addressing the JNDI problem by manipulating\nthe context bindings is a more precise, and hopefully safer,\nsolution.\n\nCloses gh-6053","distinct":true,"url":"https://api.github.com/repos/philwebb/spring-boot/commits/a5ad2b33ab9cf443efb52c9b36562c2100616b53"},{"sha":"29ac6fc154559f807c3d82acad080b2118d477c8","author":{"name":"Andy Wilkinson","email":"29af540e206d9a4441e1a4f30f14dd7c1d669027@pivotal.io"},"message":"Tolerate API changes between Tomcat 7 and Tomcat 8\n\nSee gh-6053","distinct":true,"url":"https://api.github.com/repos/philwebb/spring-boot/commits/29ac6fc154559f807c3d82acad080b2118d477c8"},{"sha":"b968c2c7afdcc3cac6ea9611795ac5a7271d9dc3","author":{"name":"Andy Wilkinson","email":"29af540e206d9a4441e1a4f30f14dd7c1d669027@pivotal.io"},"message":"Start building against Spring Framework 4.3 snapshots\n\nSee gh-6049","distinct":true,"url":"https://api.github.com/repos/philwebb/spring-boot/commits/b968c2c7afdcc3cac6ea9611795ac5a7271d9dc3"},{"sha":"1b0bbd89a27c3c8e6ff59294e2bf9ccbc7b7172c","author":{"name":"Stephane Nicoll","email":"f4981f8a262b83e9fb9e4ff53f4e71df83ee31f5@pivotal.io"},"message":"Reuse ApplicationEventMulticaster\n\nSpring Framework allows a custom `ApplicationEventMulticaster` bean to be\ndefined with a well-defined bean. If such bean is present, it is used\ninstead of the default implementation.\n\nThis commit fixes `EventPublishingRunListener` to properly honour such\narrangement. Rather than registering a `ApplicationEventMulticaster` to\ntransmit the application listeners from the `SpringBootApplication` it\nnow only uses an internal multicaster for early events (i.e. events that\nare fired before the context is actually refreshed).\n\nThis has the positive effect of making sure that `ApplicationReadyEvent`\nis fired to the proper multicaster.\n\nCloses gh-6048","distinct":true,"url":"https://api.github.com/repos/philwebb/spring-boot/commits/1b0bbd89a27c3c8e6ff59294e2bf9ccbc7b7172c"},{"sha":"73b01cff4ff2f96bedf4c9858d93591a0f22d4b3","author":{"name":"Andy Wilkinson","email":"29af540e206d9a4441e1a4f30f14dd7c1d669027@pivotal.io"},"message":"Use spring.factories to declare each test slice's auto-config imports\n\nCloses gh-6001","distinct":true,"url":"https://api.github.com/repos/philwebb/spring-boot/commits/73b01cff4ff2f96bedf4c9858d93591a0f22d4b3"},{"sha":"4a73eb6045ff346b5eafecda07618b87b8eaacf3","author":{"name":"Andy Wilkinson","email":"29af540e206d9a4441e1a4f30f14dd7c1d669027@pivotal.io"},"message":"Fix capitalization of TestDatabaseAutoConfiguration in spring.factories\n\nThe joys of OS X's case-insensitive, case-preserving file system\n\nSee gh-6001","distinct":true,"url":"https://api.github.com/repos/philwebb/spring-boot/commits/4a73eb6045ff346b5eafecda07618b87b8eaacf3"},{"sha":"cf8309f748a462510d16cc35807c8fad38e0af80","author":{"name":"Phillip Webb","email":"e45a8619d411d6e506fc3798291110bbbc037a6e@pivotal.io"},"message":"Polish","distinct":true,"url":"https://api.github.com/repos/philwebb/spring-boot/commits/cf8309f748a462510d16cc35807c8fad38e0af80"},{"sha":"39db522b1f3d3b33d31d464eaf7dc85040567ef9","author":{"name":"Stephane Nicoll","email":"f4981f8a262b83e9fb9e4ff53f4e71df83ee31f5@pivotal.io"},"message":"Hacking\n\nSee gh-5507","distinct":true,"url":"https://api.github.com/repos/philwebb/spring-boot/commits/39db522b1f3d3b33d31d464eaf7dc85040567ef9"},{"sha":"be7561b120b3c3be2b6a68459c2ff145e20d7d9f","author":{"name":"Stephane Nicoll","email":"f4981f8a262b83e9fb9e4ff53f4e71df83ee31f5@pivotal.io"},"message":"Hacking\n\nSee gh-6030","distinct":true,"url":"https://api.github.com/repos/philwebb/spring-boot/commits/be7561b120b3c3be2b6a68459c2ff145e20d7d9f"},{"sha":"941f4461e95cb25f8e8eab10ffa9d7ed3dfb7e70","author":{"name":"Phillip Webb","email":"e45a8619d411d6e506fc3798291110bbbc037a6e@pivotal.io"},"message":"Hacking","distinct":true,"url":"https://api.github.com/repos/philwebb/spring-boot/commits/941f4461e95cb25f8e8eab10ffa9d7ed3dfb7e70"},{"sha":"32d765ba14dec0647977e972e30360eedf461c45","author":{"name":"Phillip Webb","email":"e45a8619d411d6e506fc3798291110bbbc037a6e@pivotal.io"},"message":"Hacking","distinct":true,"url":"https://api.github.com/repos/philwebb/spring-boot/commits/32d765ba14dec0647977e972e30360eedf461c45"},{"sha":"d07fa9446519a73a527583d0f30f8acc4e67366d","author":{"name":"Phillip Webb","email":"e45a8619d411d6e506fc3798291110bbbc037a6e@pivotal.io"},"message":"Hacking","distinct":true,"url":"https://api.github.com/repos/philwebb/spring-boot/commits/d07fa9446519a73a527583d0f30f8acc4e67366d"},{"sha":"9baa7d5349945470e9841079398fa8584bb8de13","author":{"name":"Phillip Webb","email":"e45a8619d411d6e506fc3798291110bbbc037a6e@pivotal.io"},"message":"Hacking","distinct":true,"url":"https://api.github.com/repos/philwebb/spring-boot/commits/9baa7d5349945470e9841079398fa8584bb8de13"},{"sha":"d8e7805f3d72a52a7d6f1e355777f4d51dcefe9c","author":{"name":"Phillip Webb","email":"e45a8619d411d6e506fc3798291110bbbc037a6e@pivotal.io"},"message":"Hacking","distinct":true,"url":"https://api.github.com/repos/philwebb/spring-boot/commits/d8e7805f3d72a52a7d6f1e355777f4d51dcefe9c"},{"sha":"a94ea0e3d563e87d5c8902a39bd4c7c44ccf926e","author":{"name":"Phillip Webb","email":"e45a8619d411d6e506fc3798291110bbbc037a6e@pivotal.io"},"message":"Hacking","distinct":true,"url":"https://api.github.com/repos/philwebb/spring-boot/commits/a94ea0e3d563e87d5c8902a39bd4c7c44ccf926e"},{"sha":"a6fd7eb0ec82342db607f3ca766f027a5e947d13","author":{"name":"Phillip Webb","email":"e45a8619d411d6e506fc3798291110bbbc037a6e@pivotal.io"},"message":"Hacking","distinct":true,"url":"https://api.github.com/repos/philwebb/spring-boot/commits/a6fd7eb0ec82342db607f3ca766f027a5e947d13"}]}
{"actor":{"display_login":"philwebb"}}