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

Reply via email to