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
>

Reply via email to