I'm following this thread with some interest. What would be some good tests to make sure these cases are covered off? Some suggestions in addition to the existing test:
* Standalone client that has its own main and delegates to the CLI main * As above, but perhaps with the standalone client creating a classloader with the CLI jars and then launching it * A webapp calling commands in the CLI Any others? These are interesting use cases that I hadn't considered - this is interesting. Jon On Wed, Oct 31, 2018 at 2:30 PM Romain Manni-Bucau <rmannibu...@gmail.com> wrote: > Le mer. 31 oct. 2018 à 14:52, Daniel Cunha <daniels...@gmail.com> a écrit > : > > > Em seg, 29 de out de 2018 às 14:01, Jonathan Gallimore < > > jonathan.gallim...@gmail.com> escreveu: > > > > > We should write a test case for both of these, and agree on them. I'd > > like > > > to be able to merge this in with confidence, and without the tests I > > don't > > > see how we can do that. > > > > > > Jon > > > > > > On Mon, Oct 29, 2018 at 3:35 PM Romain Manni-Bucau < > > rmannibu...@gmail.com> > > > wrote: > > > > > > > Hi Daniel, > > > > > > > > the point is that this code is reused in several places so we must be > > as > > > > clean as we can, here the cases I had in mind: > > > > > > > > 1. reused main in another main (so an app calls the main): here the > > > pitfall > > > > is that the property openejb.classloader.first.disallow-system-load > is > > > not > > > > resetted and the TCLL neither so after the main you use a closed > > > > classloader (so will likely easily fail) > > > > > > > I really didn't get your point. Side note we are create a classloader > only > > for tomee cli execution, which keep alive only for a short time during > > command execution. > > > > That part of code is not reused in another place, if yes, just point me > > where, because I can't find it. > > > > It will close only after the program finish, since it is inside a > try-catch > > block, no? > > > > Assuming the main is launch but this main is sometimes launched > programmatically (like in a webapp) > When not you are right > > > > > > > > > > 2. if a user relies in java 8 on the classloader being the system one > > > then > > > > your new classloader level breaks it so we shouldnt create this new > > > > classloader when not needed and the old ClassPath impl is working > IMO. > > We > > > > can enrich it with a warn log saying "it will fail in next version" > > (and > > > we > > > > drop that code after 1 or 2 releases). Idea is to not break directly > > > users > > > > who can not even know some of the libs they added in the classpath > for > > > > logging purposes rely on that classloader setup - random example > indeed > > > ;). > > > > > > > > > > > Yeah, I probably could use the SystemClassPath, but it is doing much more > > than I need to CLI. I don't think that I need to change the > java.class.path > > property to make it works or other property like > > openejb.classloader.first.disallow-system-load. > > > > We should likely be cleaner here but not your PR, fair enough > > > > > > And to be honest, I didn't understand what is > > openejb.classloader.first.disallow-system-load and why do we have it. :) > > > > It is used in the "webapp" loader to check if we should load some well > known classes from the system classloader or not. > It is likely the kind of property you rely on when you want to be > embeddable but also standalone. > > > > > > > > > > Romain Manni-Bucau > > > > @rmannibucau <https://twitter.com/rmannibucau> | Blog > > > > <https://rmannibucau.metawerx.net/> | Old Blog > > > > <http://rmannibucau.wordpress.com> | Github < > > > > https://github.com/rmannibucau> | > > > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book > > > > < > > > > > > > > > > https://www.packtpub.com/application-development/java-ee-8-high-performance > > > > > > > > > > > > > > > > > Le lun. 29 oct. 2018 à 16:14, Daniel Cunha <daniels...@apache.org> a > > > > écrit : > > > > > > > > > Hi, > > > > > > > > > > I updated the PR with tests! > > > > > > > > > > Em seg, 29 de out de 2018 às 08:27, Jonathan Gallimore < > > > > > jonathan.gallim...@gmail.com> escreveu: > > > > > > > > > > > I saw your note on the PR regarding Romain's feedback. > > > > > > > > > > > > For visibility here, Romain is querying whether this patch will > > cause > > > > an > > > > > > issue with folks calling the CLI with a custom classpath using > > `java > > > > -cp > > > > > > ...` under Java 8. I'd suggest we add a test for it, which looks > to > > > be > > > > > what > > > > > > Daniel is doing. > > > > > > > > > > > > Thanks guys. > > > > > > > > > > > > Jon > > > > > > > > > > > > On Thu, Oct 25, 2018 at 12:35 PM Daniel Cunha < > > daniels...@apache.org > > > > > > > > > > wrote: > > > > > > > > > > > > > Hi Folks, > > > > > > > > > > > > > > I sent a PR on TomEE to fix the TOMEE-2253. I got a lot of > > feedback > > > > > from > > > > > > > Romain (thank you Romain for all comments and help) > > > > > > > > > > > > > > I believe which we are in good shape to merge. > > > > > > > The changes cover from Java 8 till Java 11 which not provide > any > > > > impact > > > > > > for > > > > > > > TomEE or application deployed on it. > > > > > > > > > > > > > > Please, look at the PR and let me know what you think. > > > > > > > > > > > > > > PR: https://github.com/apache/tomee/pull/176 > > > > > > > > > > > > > > -- > > > > > > > Daniel "soro" Cunha > > > > > > > https://twitter.com/dvlc_ > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > Daniel "soro" Cunha > > > > > https://twitter.com/dvlc_ > > > > > > > > > > > > > > > > Thank you! :) > > -- > > Daniel "soro" Cunha > > https://twitter.com/dvlc_ > > >