> On June 26, 2017, 11:58 p.m., Jinmei Liao wrote:
> > geode-core/src/main/java/org/apache/geode/cache/client/internal/ConnectionFactoryImpl.java
> > Line 82 (original), 82 (patched)
> > <https://reviews.apache.org/r/60375/diff/1/?file=1763105#file1763105line82>
> >
> >     since we already pass in the entire sys, do we need to pass in 
> > sys.getSecurityService() as well? Can we change the signaure of the 
> > constructor to take an InternalDistributedSystem, and directly uses the 
> > security service inside the passed sys?
> 
> Kirk Lund wrote:
>     I'm trying to separate our major services instead of folding them in 
> together. For example, I don't want to go to Cache to get DistributedSystem 
> (but you can) and I don't want our code to go to DistributedSystem to get 
> SecurityService. The link between DistributedSystem and SecurityService is 
> tenuous at best -- DistributedSystem USES SecurityService but it doesn't 
> logically own it except for the fact that DS is the 1st object in Geode that 
> needs to use it. So from the point-of-view of an object like HandShake, I'm 
> trying to give it individual services. This also has the side effect of 
> making classes such as HandShake easier to unit test when mocking the 
> collaborators. Another reason I'm doing this is because it makes ALL of the 
> collorators visible at the constructor level which is a good practice to 
> follow.
>     
>     If we want to start using Dependency Injection (which I want to), then we 
> need to do even more of this -- passing in every collaborator individually 
> rather than passing in a god object to invoke getters against on it to get 
> the other dependencies.
>     
>     Or to summarize even more, I'm trying to steer away from bad code to good 
> code (good object-oriented design) and god objects are one of the worst 
> anti-patterns.

If you envisioned that security service will be rippsed out of ds in the 
future, and wants to gear towards that way, then I can see your point. But from 
the current state of things I would not call it bad o-o design though. If I see 
any method call that's in the shape of callXYZ(o, o.getX(), o.getY(), 
o.getZ()), then I would question why bother pssing in the last three 
parameters. To me, that's anti-pattern.


- Jinmei


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/60375/#review178940
-----------------------------------------------------------


On June 26, 2017, 6:02 p.m., Kirk Lund wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/60375/
> -----------------------------------------------------------
> 
> (Updated June 26, 2017, 6:02 p.m.)
> 
> 
> Review request for geode, Emily Yeh, Jinmei Liao, Jared Stewart, Ken Howe, 
> and Patrick Rhomberg.
> 
> 
> Bugs: GEODE-3117
>     https://issues.apache.org/jira/browse/GEODE-3117
> 
> 
> Repository: geode
> 
> 
> Description
> -------
> 
> GEODE-3117: fix Gateway authentication with legacy security
> 
> * add GatewayLegacyAuthenticationRegressionTest to reproduce bug
> * fix authentication of Gateway sender/receiver with 
> SECURITY_CLIENT_AUTHENTICATOR
> 
> 
> Diffs
> -----
> 
>   
> geode-core/src/main/java/org/apache/geode/cache/client/internal/ConnectionFactoryImpl.java
>  a419d575010d39d4dab6c5c8f9748928c1764344 
>   
> geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/HandShake.java
>  32735b9ab17fe9467cea46096bd177902145e4bd 
>   
> geode-wan/src/test/java/org/apache/geode/internal/cache/wan/misc/GatewayLegacyAuthenticationRegressionTest.java
>  PRE-CREATION 
> 
> 
> Diff: https://reviews.apache.org/r/60375/diff/1/
> 
> 
> Testing
> -------
> 
> * new test reproduces GEODE-3117: GatewayLegacyAuthenticationRegressionTest
> * precheckin passes
> 
> 
> Thanks,
> 
> Kirk Lund
> 
>

Reply via email to