On Tue, 2014-02-25 at 14:09 +0100, Oleg Kalnichevski wrote: > On Tue, 2014-02-25 at 12:04 +0000, sebb wrote: > > On 25 February 2014 09:52, Oleg Kalnichevski <[email protected]> wrote: > > > On Tue, 2014-02-25 at 01:08 +0000, sebb wrote: > > >> On 24 February 2014 16:33, Gary Gregory <[email protected]> wrote: > > >> > +1 > > >> > > > >> > If we have a public subclass of a package private class, I should be > > >> > able > > >> > to see all of the methods I can call on that class (and super class). > > >> > > >> That's not the case here. It's a public class using a package class. > > >> > > >> http://hc.apache.org/httpcomponents-client-4.3.x/httpclient-cache/apidocs/org/apache/http/impl/client/cache/ExponentialBackOffSchedulingStrategy.html#schedule%28org.apache.http.impl.client.cache.AsynchronousValidationRequest%29 > > >> > > >> Which begs the question - how is it used externally? > > >> > > >> The schedule method implements an interface so has to be public, but > > >> perhaps it is only intended for use internally. > > >> In which case the Javadoc should probably make this clear. > > >> > > > > > > In this package private classes ought not be referenced by public > > > javadocs. > > > > Is that "package, private" or "package-private" ? > > > > However, a public method - schedule() - uses a package-private class - > > AsynchronousValidationRequest - as a parameter. > > Normally one should be able to provide links to public method parameter > > types. > > > > Then we have a problem here. Public interfaces are not supposed to > depend on package-private classes or interfaces. This is just plain > wrong. > > We have several options how to fix it > > (1) Make AsynchronousValidationRequest (and consequently > AsynchronousValidator) public though they clearly were never meant to be > a part of public APIs. > > (2) Fix the #schedule method and break API compatibility in the process. > This is unlikely to have any impact on ordinary users given the > interface is clearly unusable in its current form but it going to be the > first deliberate API breakage (I am aware of) in the 4.x GA line. > > (3) Deprecate SchedulingStrategy in favor of a newer interface. > > Oleg >
I worked the problem around my making AsynchronousValidationRequest public while leaving its constructor package private. Oleg --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
