That would make the whole thing much less appealing to me, since then we wouldn't have the advantage of enforcing API/SPI restrictions via maven. Furthermore, people wouldn't be able to rely on just the the public API jar for compilation, since they would get a NoClassDefFoundError for SomeInternalClass.

If the point is to make it so we have a clean separation of public APIs/SPIs from internal implementation and kernel classes, I think we should go all the way and really separate them out.



On Aug 8, 2007, at 2:48 PM, Patrick Linskey wrote:

Hmm. That's annoying. I think I'd prefer to just keep the impl libs
inside the API module rather than adding the SomeInternalClass style.

-Patrick

On 8/8/07, Marc Prud'hommeaux <[EMAIL PROTECTED]> wrote:

This is a show-stopper if we were to refactor the code into different
maven modules, since you can't have circular dependencies between
modules (e.g., openjpa-persistence-public-api couldn't depend on
openjpa-persistence if openjpa-persistence itself depeneds on openjpa-
persistence-public-api).

My suggestion for this kind of thing would be that if our API has
some method like:

    public SomeInternalClass getFoo()

then we would instead add a SomeInternalBogusInterface with no
methods that is opaque to the user, and which SomeInternalClass will
implement. The advantage to this is that our public APIs couldn't
then have a transitive dependency on non-public APIs, which I think
is beneficial from an API consistency standpoint.



On Aug 8, 2007, at 2:36 PM, Patrick Linskey wrote:

Hi,

I think it's probably worth discussing module dependency a bit. I
believe that it will be important for the API module (if we make such
a module) to depend on the non-API modules internally. IOW, the code
blocks of some of the classes in the API module will need to use
non-API classes. I don't see this as a problem, but thought it would
be worth pointing out.

It also is relevant because it means that we can directly use the
symbolic constants as the enum ordinal values.

-Patrick

--
Patrick Linskey
202 669 5907




--
Patrick Linskey
202 669 5907

Reply via email to