On Sat, 2012-11-17 at 12:49 -0500, Gary Gregory wrote: > On Sat, Nov 17, 2012 at 10:25 AM, Oleg Kalnichevski <ol...@apache.org>wrote: > > > On Fri, 2012-11-16 at 21:19 -0500, Gary Gregory wrote: > > > As a tangent I want to reduce this code pattern which is duplicated no > > less > > > than six times: > > > > > > // determine the release version from packaged version info > > > final VersionInfo vi = VersionInfo.loadVersionInfo > > > ("org.apache.http.client", > > > HttpClientBuilder.class.getClassLoader()); > > > final String release = (vi != null) ? > > > vi.getRelease() : VersionInfo.UNAVAILABLE; > > > HttpProtocolParams.setUserAgent(params, > > > "Apache-HttpClient/" + release + " (java 1.5)"); > > > > > > into a new method: > > > > > > setUserAgent(params, "Apache-HttpClient", "org.apache.http.client", > > > HttpClientBuilder.class); > > > > > > public static void setUserAgent(HttpParams params, String name, > > String > > > pkg, Class<?> cls) { > > > final VersionInfo vi = VersionInfo.loadVersionInfo(pkg, > > > cls.getClassLoader()); > > > final String release = (vi != null) ? vi.getRelease() : > > > VersionInfo.UNAVAILABLE; > > > HttpProtocolParams.setUserAgent(params, name + "/" + release + " > > > (java 1.5)"); > > > } > > > > > > The question is: where in Core should it go? > > > > > > I see that HttpProtocolParams is deprecated, so it cannot go in there. > > > > > > So... where? > > > > > > Gary > > > > > > > Gary > > > > HttpClient trunk is in a state of flux right now. But please bear with > > me a little while longer. I think HttpCore 4.3-alpha1 should be ready > > quite soon. Once HttpClient trunk picks up new APIs from HttpCore 4.3 a > > lot of things should become clearer (or so I would like to hope). > > > > --- > > I think this particular bit belongs to HttpClientBuilder and it should > > only be used once. Another place for it might be HttpClientUtils. > > > > But neither of these classes are in the Core. The 3 (not 6) code > duplications are in both the regular and async clients such that the core > is the only place to put it to avoid duplication. Am I missing something? > - > org.apache.http.impl.nio.client.DefaultHttpAsyncClient.setDefaultHttpParams(HttpParams) > - > org.apache.http.impl.client.builder.HttpClientBuilder.setUserAgent(HttpParams, > String, String, Class<?>) > - > org.apache.http.impl.client.DefaultHttpClient.setDefaultHttpParams(HttpParams) > >
I was just thinking that the client was the right place given the snippet in question clearly had HttpClient specific bits. Anyway, feel free to put that code in a place you deem most appropriate. There is now o.a.h.config package in core for configuration components. o.a.h.utils might be another place. > > I am also in favor of option 3. Besides, we might even have something > > that combine option 2 and 3 > > > > 3) User-Agent: Apache-HttpClient/4.2.1 (Java 1.5 compatible; > > Java/1.6.0_35) > > > > Hm... but HttpClient is also "compatible" with Java 1.6, that's why I > considered the "minimum" verbiage: > > 3) User-Agent: Apache-HttpClient/4.2.1 (Java 1.5 minimum; Java/1.6.0_35) > Fair enough. Makes sense. Oleg --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org For additional commands, e-mail: dev-h...@hc.apache.org