I'm not sure I'm happy with the idea of many 3rd-party jars adding stuff into a Brooklyn-owned package. It doesn't rule out a couple of 3rd-party packages happening to choose the same name. I also think there might be issues with OSGi, as OSGi requires explicit declaration of packages, but I don't know enough about OSGi to know for sure.
Are there any other options for doing this? I'd suggest Java's ServiceLoader facility, but that requires 3rd party packages writing a Java class. Any other ideas? Richard. On 19 May 2016 at 11:32, Martin Harris <[email protected]> wrote: > Hi Folks, > > Just a quick heads-up about a PR I raised yesterday > <https://github.com/apache/brooklyn-server/pull/144> > > When Brooklyn is rebinding from persisted state, it instantiates classes > (such as entities) based on the persisted fully-qualified classname. This > causes a problem if the name of the class, or its package changes, > resulting in a ClassNotFoundException > > To resolve this issue, Brooklyn maintains a list of classes that have been > renamed > < > https://github.com/apache/brooklyn-server/blob/6efc98a6ac79ef009468f231c8a93814ff63c5d2/core/src/main/resources/org/apache/brooklyn/core/mgmt/persist/deserializingClassRenames.properties > >. > The problem is that there is no way for downstream projects to extend this > list without simply copying the list and ensuring the copy is closer to the > head of the classpath - which risks divergence of the files > > PR 144 <https://github.com/apache/brooklyn-server/pull/144> resolves this > issue by moving the file into a specific package, then during > deserialisation it checks for any files in that package that end with > .properties. It’s assumed that downstream projects will use a > project-specific filename to prevent collisions > > Cheers > > -- > Martin Harris > Lead Software Engineer > Cloudsoft Corporation Ltd > www.cloudsoftcorp.com > Mobile: +44 (0)7989 047-855 >
