incubator-ftpserver-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Niklas Gustavsson <nik...@protocol7.com>
Subject Re: Your BaseUser-related patch in apache ftpserver
Date Sat, 06 May 2006 19:20:25 GMT
Still around :-)

Using a more direct IoC (or DI) makes dependencies very clear and easy 
to change. Also, it will remove the need for some (but not all) 
factories. So, if you are up to it, I propose moving into a type 2/3 
IoC, rather than the current model.

/niklas

Rana Bhattacharyya wrote:
> Hi,
> 
>    These are the things I understand.
> 
> 1. SecurityManager and UserManager are two different
> activities. So there should be two different
> components where UserManager is an optional component.
> 
> 2. SecurityManager will use Credentials and
> UserManager will use User. As the UserManager is an
> optional component, the User is also an optional
> object.
> 
> 3. FileSystemView depends on what .... Credentials or
> User? It is not very clear.
> 
> 4. We will be able to create User when we have an
> UserManager (which is an optional component).
> 
> Please write your comments about my understanding. Let
> us first clarify our doubts then we shall think about
> implementations. We do not want to modify the codebase
> in a hurry when there is a major change.
> 
> Now I understand what Niklas Gustavsson meant by
> "Inversion of Control" :). 
> 
> Niklas, where are you?
> 
> Thanks,
> Rana Bhattacharyya
> 
> 
> --- Sergey Vladimirov <vlsergey@gmail.com> wrote:
> 
>> Hi, Rana,
>>
>> 1. User Manager can use any User implemetation, this
>> is true. But what
>> should, for example, FileSystemManager use if it
>> need user implementation
>> from UserManager, not BaseUser?
>> For current moment it need to take user name from
>> request and lookup for
>> actual User from UserManager.
>> I don't think it is good. I don't think that
>> isolation User from UserManager
>> and User in request is good idea. In fact, my own
>> implementations of
>> FileSystemManager and SecurityManager would be much
>> simple with just storing
>> User from UserManager in Request.
>> More over, it is much better from perfomance point
>> of view.
>>
>> 2. Creating Users should be optional possibility of
>> UserManager, not
>> FTPServer. One more time about mine implementatios -
>> they don't allow to
>> create new users at all.
>> If "setters" needs only to create users, just leave
>> them in
>> AbstractUserManager which would use BaseUser.
>>
>> 5. Using BaseUser as Credentials is confusing. I
>> prefer to set user to null
>> until it is logged-in.
>>
>> Sergey
>>
>> 2006/5/5, Rana Bhattacharyya <rana_b@yahoo.com>:
>>> Hi,
>>>
>>>    Please find my comments below.
>>>
>>> 1. User manager can use any User implementation.
>> It is
>>> not necessary to use BaseUser. It just happens
>> that
>>> the user managers provided with the server use
>>> BaseUser.
>>>
>>> 2. From API point of view, we only need the
>> getters
>>> method from the User interface. But for setting we
>>> need setters. So BaseUser has both getters and
>>> setters. We need these setters for creating users.
>>>
>>> 3. The FTP server populates BaseUser to isolate
>>> UserManager provided User implementation and the
>>> BaseUser used internally. We do not assume that
>> the
>>> UserManager provided User is BaseUser.
>>>
>>> 4. Probably, we can rename BaseUser to say FtpUser
>> to
>>> remove the confusion.
>>>
>>> 5. We are using BaseUser internally just like the
>>> Credentials object.
>>>
>>> Thanks,
>>> Rana Bhattacharyya
>>>
>>>
>>>
>>> --- Sergey Vladimirov <vlsergey@gmail.com> wrote:
>>>
>>>> äÏÂÒÙÊ ÄÅÎØ, áÎÔÏÎ
>>>> Good day, Anton,
>>>>
>>>> I considered different ways of implementation.
>> At
>>>> least two of them:
>>>> 1. Store user name in request until user log-in.
>>>> 2. Retrieve user by user name from UserManager,
>> but
>>>> set the flag, that it is
>>>> not init yet.
>>>>
>>>> I selected first way, because there is
>> possibility
>>>> to create UserManager
>>>> which can retrieve user only with user name and
>>>> password. So we need to
>>>> store user name.
>>>> But I prefer to do it in new class, Credentials,
>>>> instead of using new String
>>>> field, because it is more readable and
>>>> understandable from my point of view.
>>>>
>>>> So by this patch I "fix" two issues at one time:
>>>> 1. Partially replace BaseUser with it
>> UserManager
>>>> specific implementation
>>>> 2. Remove User from Request until User is
>> logged-in.
>>>> Sergey
>>>>
>>>> 2006/5/5, Anton Goldberg
>> <a.v.goldberg@gmail.com>:
>>>>> Hi Sergey,
>>>>> (or should I say Sdravstvuy!). I looked
>> through
>>>> your patch and while I
>>>>> totally agree with the idea behind the patch I
>>>> don't quite understand
>>>>> the implementation.
>>>>> Let me go into more details here.
>>>>> As far as I understand UserManager works like
>> a
>>>> Factory (pattern) for
>>>>> User. I.e. the particular implementation of
>>>> UserManager knows what
>>>>> specific class implementing User interface it
>>>> needs to instantiate. So
>>>>> the default (BaseUser) implementation should
>> be
>>>> replaced by
>>>>> UserManager supplied implementation on log-in.
>>>> (PASS/USER commands).
>>>>> As a thing that gets replaced BaseUser works
>> just
>>>> fine, without
>>>>> introducing the new class Credentials, because
>>>> Credentials exposes a
>>>>> subset of User (and BaseUser) functionality.
>>>>>
>>>>> Now I have a slightly different issue - if you
>>>> noticed, I didn't reply
>>>>> to the list. The reason being that while I
>>>> subscribed to the list
>>>>> fine, I am unable to post from any of my email
>>>> addresses - I tryed my
>>>>> workaddress, this gmail account and also my
>>>> personal mail server. I
>>>>> wonder if you in your contributor role could
>> check
>>>> it out and let me
>>>>> know what might be the reason I can not post.
>>>>>
>>>>> You are quite welcome to reply in Russian, my
>>>> email client can read
>>>>> russian letters just fine.
>>>>> --
>>>>> Anton
>>>>>
>>>>
>>>>
>>>> --
>>>> Sergey Vladimirov
>>>>
>>>
>>> __________________________________________________
>>> Do You Yahoo!?
>>> Tired of spam?  Yahoo! Mail has the best spam
>> protection around
>>> http://mail.yahoo.com
>>>
>>
>>
>> --
>> Sergey Vladimirov
>>
> 
> 
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam protection around 
> http://mail.yahoo.com 
> 


Mime
View raw message