On 30.11.2016 10:16, Alan Bateman wrote:
On 30/11/2016 08:53, Jochen Theodorou wrote:

Hi,

for my understanding I would like to ask the following:

Given:
* Module A: uses service S1 and provides service S2
* Module B: uses service S2 and provides service S1

In my understanding this forms a cyclic dependency, but since this is
not directly on the API level I am wondering if this is really one
"per definition as to be seen by jigsaw"?
You need to expand the example a bit to say where S1 and S2 are, it's
otherwise impossible to say if there is a cycle in the dependency graph.

For example, there is no cycles here:

module S {
    exports p;
}

module A {
    requires S;
    uses p.S1;
    provides p.S2 with ...
}

module B {
    requires S;
    uses p.S2;
    provides p.S1 with ...
}

if that is no cycle, then you answered my question already. There is no dependency between A and B in the sense that A uses a class from B and B uses a class from A - not directly at least. But there is one through the ServiceLoader, but it is still not cyclic for jigsaw, which looks for that only at the "direct" API usage

And it is easy to see that if we drop S and put the service interface for S1 in A and the one for S2 in B that we then get a cycle just because of "requires"

thanks,
Jochen

Reply via email to