On 08/09/2024 08:59, PavelTurk wrote:
Hello everyone,

Lets consider the following situation:

Bootlayer (module Core) is a main application
- child layer A (module A, module Foo) is a plugin A
- child layer B (module B, module Foo) is a plugin B.

So, the SAME module Foo (with class Foo) is used in two different child layers.

Module Core provides this service {
       Object getInterPluginObject();
       void setInterPluginObject(Object obj);
}

So, in plugin A I do
var foo = new Foo();
coreService.setInterPluginObject(foo);

and in plugin B I do
var foo = (Foo) coreService.getInterPluginObject();

Could anyone say if it should work, and if yes, then how safe this approach is?
Please note, that module Foo CAN NOT be added to bootlayer because main
application shouldn't know anything about it.

I assume this arrangement will fail with ClassCastException as B can't cast a A-Foo to a B-Foo.

If Core wants to provides a system-wide registry (which I think is what you are doing here) then it will need to be a Foo interface that is visible and accessible to all all users of that registry.

-Alan






Reply via email to