Corrections ( :-P ), my apologies... Iterable<ProxyConfiguration> proxyConfigurations = ...;
StreamSupport.stream(proxyConfiguration*s*.*spliterator*(), false) .filter(config -> config.getType.isSecure()) *// This could be improved; see below...* .*forEach*(config -> // do something with *each* secure proxy *config*). Although, I am sure you got the point, ;-) With improvement: interface ProxyConfiguration { ProxyType getType(); // null-safe! default boolean isSecure() { ProxyType type = getType(); return type != null && type.isSecure(); } } Then: StreamSupport.stream(..) * .filter(ProxyConfiguration::isSecure)* .forEach(...); Again, completely contrived. Cheers! -j On Mon, Mar 9, 2020 at 11:14 PM John Blum <jb...@pivotal.io> wrote: > Yes, it's redundant (i.e. Enum + class type). > > However, having an Enum in addition to a specific type (1 reason I > defaulted the getType() method) can still be useful, such as in a switch > statement for example. Enums are, well, easier to enumerate (useful in > Streams with filters). Maybe you are going to classify certain Proxy's > by Enum type, for example: > > enum ProxyType { > > ONE, > TWO, > THREE; > > // Contrived example > public boolean isSecure() { > return Arrays.asList(ONE, THREE).contains(this); > } > } > > Then: > > Iterable<ProxyConfiguration> proxyConfigurations = ...; > > StreamSupport.stream(proxyConfiguration.spilterator(), false) > .filter(config -> config.getType.isSecure()) > .ifPresent(config -> // do something with secure proxy). > > > Food for thought. > > -j > > > > On Mon, Mar 9, 2020 at 7:11 PM Jacob Barrett <jbarr...@pivotal.io> wrote: > >> Yes it’s redundant. >> >> > On Mar 9, 2020, at 5:08 PM, Bill Burcham <bill.burc...@gmail.com> >> wrote: >> > >> > What I like about John's full-fledged-class-per-proxy-kind is that >> > everything that can potentially vary with proxy kind is all together in >> a >> > single object. >> > >> > That being said, John, in your SniProxyConfiguration, it seems to me >> that >> > the class itself (SniProxyConfiguration) could easily stand for the >> proxy >> > "type". If that's true then we could view ProxyType as redundant and >> simply >> > eliminate it right? >> > >> >> On Mon, Mar 9, 2020 at 2:41 PM Jacob Barrett <jbarr...@pivotal.io> >> wrote: >> >> >> >> +1 to Anthony and John. See similar comments in the RFC. >> >> >> >>>> On Mar 9, 2020, at 12:08 PM, Anthony Baker <aba...@pivotal.io> >> wrote: >> >>> >> >>> I’m not suggesting encoding the the proxy type in the URI. Just >> >> wondering if we can support stronger typing than String for defining >> >> host/port/url configuration. As John notes, later in the thread, >> perhaps >> >> using a configuration interface may help. >> >>> >> >>> Anthony >> >>> >> >>> >> >>>> On Mar 9, 2020, at 11:11 AM, Bill Burcham <bill.burc...@gmail.com> >> >> wrote: >> >>>> >> >>>> Anthony and Jacob, I can see how the proposed ProxyType parameter >> could >> >> fit >> >>>> into the scheme part of a a URI. However, the problem that >> introduces is >> >>>> that we would then have to pick (named) URL schemes to support. But >> URL >> >>>> schemes are standardized and it's not obvious which of the standard >> ones >> >>>> might apply here. >> >>>> >> >>>> If we couldn't adopt a standard scheme, we'd have to make one up. At >> >> that >> >>>> point I question the value of putting the (made-up) scheme into a URI >> >>>> string. >> >>>> >> >>>> For this reason, I am a fan of the ProxyType parameter over a made-up >> >> URL >> >>>> scheme. >> >>>> >> >>>> That leaves open Anthony's other idea: eliminating the ProxyType >> >> parameter >> >>>> in favor of a separate method to set each kind of proxy. In the >> current >> >>>> RFC, that's just one, e.g. setPoolProxyWithSNI. I guess that comes >> down >> >> to: >> >>>> what's the likelihood of us supporting other proxy types soon, and >> then >> >>>> what's the value of having a single method (and multiple enums) >> versus >> >>>> multiple methods (and no enum). If we thought the proxyAddress >> parameter >> >>>> would carry different information across proxy types that might tilt >> us >> >>>> toward the separate methods. The two on the table, however, (SNI, >> >> SOCKS5) >> >>>> both have identical proxyAddress information. >> >>>> >> >>>> On Mon, Mar 9, 2020 at 10:54 AM Bill Burcham <bill.burc...@gmail.com >> > >> >> wrote: >> >>>> >> >>>>> By popular demand we are extending the RFC review period. I know Udo >> >> asked >> >>>>> for Friday (and Joris +1'd it), but since this is a small RFC, we'd >> >> like to >> >>>>> try to close it by Wednesday, March 11, ok? >> >>>>> >> >>>>> On Mon, Mar 9, 2020 at 10:39 AM Jacob Barrett <jbarr...@pivotal.io> >> >> wrote: >> >>>>> >> >>>>>> I raised similar concerns as a comment in the RFC. >> >>>>>> >> >>>>>>> On Mar 9, 2020, at 10:29 AM, Anthony Baker <aba...@pivotal.io> >> >> wrote: >> >>>>>>> >> >>>>>>> Given this new API: >> >>>>>>> >> >>>>>>> setPoolProxy(ProxyType type, String proxyAddress) >> >>>>>>> >> >>>>>>> The ProxyType enum seems to be a look ahead at supporting other >> kinds >> >>>>>> of proxies. What is your thinking about using the enum vs specific >> >> named >> >>>>>> API’s (e.g. setPoolProxyWithSNI). >> >>>>>>> >> >>>>>>> Currently the definition of the proxyAddress seems to be >> dependent of >> >>>>>> the proxy type. Did you consider stronger typing using an URI >> >> parameter >> >>>>>> type? >> >>>>>>> >> >>>>>>> Anthony >> >>>>>>> >> >>>>>>> >> >>>>>>> >> >>>>>>>> On Mar 6, 2020, at 11:04 AM, Bill Burcham < >> bill.burc...@gmail.com> >> >>>>>> wrote: >> >>>>>>>> >> >>>>>>>> Please review the RFC for *Client side configuration for a SNI >> >> proxy*: >> >>>>>>>> >> >>>>>>>> >> >>>>>> >> >> >> https://cwiki.apache.org/confluence/display/GEODE/Client+side+configuration+for+a+SNI+proxy >> >>>>>>>> >> >>>>>>>> Please comment by Monday, March 9, 2020. >> >>>>>>>> >> >>>>>>>> Regards, >> >>>>>>>> Bill and Ernie >> >>>>>>> >> >>>>>> >> >>>>> >> >>> >> >> >> >> >> > > > -- > -John > Spring Data Team > -- -John Spring Data Team