[Engine-devel] ok to sort login domains on backend?

------=_Part_3762588_2036386564.1377865608371 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Hi, I'm working on https://bugzilla.redhat.com/785555 -- "domain selection list in login screen should be sorted alphabetically" I was going to put the sort logic in the web apps, but it makes sense to just put it in the backend, specifically in GetDomainListQuery. (There is already a sort there, but it needs to be tweaked to put "internal" always last.) This would affect non-webapp clients (REST API), so I want to make sure there are no objections. Unit tests pass and it seems to work fine (screen attached). Any objections? Thanks, Greg Greg Sheremeta Red Hat, Inc. Sr. Software Engineer, RHEV Cell: 919-807-1086 gshereme@redhat.com ------=_Part_3762588_2036386564.1377865608371 Content-Type: image/png; name="login domain selectbox.png" Content-Disposition: attachment; filename="login domain selectbox.png" Content-Transfer-Encoding: base64 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 ------=_Part_3762588_2036386564.1377865608371--

----- Original Message -----
From: "Greg Sheremeta" <gshereme@redhat.com> To: engine-devel@ovirt.org Sent: Friday, August 30, 2013 3:26:48 PM Subject: [Engine-devel] ok to sort login domains on backend?
Hi,
I'm working on https://bugzilla.redhat.com/785555 -- "domain selection list in login screen should be sorted alphabetically"
I was going to put the sort logic in the web apps, but it makes sense to just put it in the backend, specifically in GetDomainListQuery. (There is already a sort there, but it needs to be tweaked to put "internal" always last.) This would affect non-webapp clients (REST API), so I want to make sure there are no objections. Unit tests pass and it seems to work fine (screen attached).
Any objections?
I think that sorting of visualization is presentation layer role.
Thanks, Greg
Greg Sheremeta Red Hat, Inc. Sr. Software Engineer, RHEV Cell: 919-807-1086 gshereme@redhat.com _______________________________________________ Engine-devel mailing list Engine-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel

----- Original Message ----- From: "Alon Bar-Lev" <alonbl@redhat.com> Sent: Friday, August 30, 2013 9:32:46 AM
----- Original Message -----
From: "Greg Sheremeta" <gshereme@redhat.com> To: engine-devel@ovirt.org Sent: Friday, August 30, 2013 3:26:48 PM Subject: [Engine-devel] ok to sort login domains on backend?
Hi,
I'm working on https://bugzilla.redhat.com/785555 -- "domain selection list in login screen should be sorted alphabetically"
I was going to put the sort logic in the web apps, but it makes sense to just put it in the backend, specifically in GetDomainListQuery. (There is already a sort there, but it needs to be tweaked to put "internal" always last.) This would affect non-webapp clients (REST API), so I want to make sure there are no objections. Unit tests pass and it seems to work fine (screen attached).
Any objections?
I think that sorting of visualization is presentation layer role.
true in general, but I think that there is no harm in returning items from the backend in some default order, especially if this is a list of simple items that have only one possible order that makes sense.
Thanks, Greg
Greg Sheremeta Red Hat, Inc. Sr. Software Engineer, RHEV Cell: 919-807-1086 gshereme@redhat.com _______________________________________________ Engine-devel mailing list Engine-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel
_______________________________________________ Engine-devel mailing list Engine-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel

----- Original Message -----
From: "Einav Cohen" <ecohen@redhat.com> To: "Alon Bar-Lev" <alonbl@redhat.com> Cc: "Greg Sheremeta" <gshereme@redhat.com>, engine-devel@ovirt.org Sent: Friday, August 30, 2013 5:12:37 PM Subject: Re: [Engine-devel] ok to sort login domains on backend?
----- Original Message ----- From: "Alon Bar-Lev" <alonbl@redhat.com> Sent: Friday, August 30, 2013 9:32:46 AM
----- Original Message -----
From: "Greg Sheremeta" <gshereme@redhat.com> To: engine-devel@ovirt.org Sent: Friday, August 30, 2013 3:26:48 PM Subject: [Engine-devel] ok to sort login domains on backend?
Hi,
I'm working on https://bugzilla.redhat.com/785555 -- "domain selection list in login screen should be sorted alphabetically"
I was going to put the sort logic in the web apps, but it makes sense to just put it in the backend, specifically in GetDomainListQuery. (There is already a sort there, but it needs to be tweaked to put "internal" always last.) This would affect non-webapp clients (REST API), so I want to make sure there are no objections. Unit tests pass and it seems to work fine (screen attached).
Any objections?
I think that sorting of visualization is presentation layer role.
true in general, but I think that there is no harm in returning items from the backend in some default order, especially if this is a list of simple items that have only one possible order that makes sense.
Even if that so, there is no reason to relay on it. If sort is required at presentation, presentation layer should apply sort.
Thanks, Greg
Greg Sheremeta Red Hat, Inc. Sr. Software Engineer, RHEV Cell: 919-807-1086 gshereme@redhat.com _______________________________________________ Engine-devel mailing list Engine-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel
_______________________________________________ Engine-devel mailing list Engine-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel

----- Original Message ----- From: "Alon Bar-Lev" <alonbl@redhat.com> Sent: Friday, August 30, 2013 12:35:24 PM
----- Original Message -----
From: "Einav Cohen" <ecohen@redhat.com> To: "Alon Bar-Lev" <alonbl@redhat.com> Cc: "Greg Sheremeta" <gshereme@redhat.com>, engine-devel@ovirt.org Sent: Friday, August 30, 2013 5:12:37 PM Subject: Re: [Engine-devel] ok to sort login domains on backend?
----- Original Message ----- From: "Alon Bar-Lev" <alonbl@redhat.com> Sent: Friday, August 30, 2013 9:32:46 AM
----- Original Message -----
From: "Greg Sheremeta" <gshereme@redhat.com> To: engine-devel@ovirt.org Sent: Friday, August 30, 2013 3:26:48 PM Subject: [Engine-devel] ok to sort login domains on backend?
Hi,
I'm working on https://bugzilla.redhat.com/785555 -- "domain selection list in login screen should be sorted alphabetically"
I was going to put the sort logic in the web apps, but it makes sense to just put it in the backend, specifically in GetDomainListQuery. (There is already a sort there, but it needs to be tweaked to put "internal" always last.) This would affect non-webapp clients (REST API), so I want to make sure there are no objections. Unit tests pass and it seems to work fine (screen attached).
Any objections?
I think that sorting of visualization is presentation layer role.
true in general, but I think that there is no harm in returning items from the backend in some default order, especially if this is a list of simple items that have only one possible order that makes sense.
Even if that so, there is no reason to relay on it.
if this method will return a sorted list *by definition*, there would be no reason to NOT relay on it. for this particular case, I think that it would be a bit of waste if the exact same sorting logic will be duplicated across the different clients' code (including 3rd-party clients). If we can make it a little bit easier on the clients, I don't see why not to do it.
If sort is required at presentation, presentation layer should apply sort.
define "presentation"; looking at the xml response of a rest-api GET request in a browser is also "presentation", but I can't really apply sort there; yes, I can change the rest-api code to sort the results, but why not simply make it a bit easier for *all* clients, and return the results from the backend already sorted in the way which is probably the most comfortable for everyone? [again - you are generally correct, but in this particular case, of simple business entities which have pretty much only one way of sorting that makes sense, I don't see why not make an exception and apply the sort on the backend]
Thanks, Greg
Greg Sheremeta Red Hat, Inc. Sr. Software Engineer, RHEV Cell: 919-807-1086 gshereme@redhat.com _______________________________________________ Engine-devel mailing list Engine-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel
_______________________________________________ Engine-devel mailing list Engine-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel
_______________________________________________ Engine-devel mailing list Engine-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel

----- Original Message -----
From: "Einav Cohen" <ecohen@redhat.com> To: "Alon Bar-Lev" <alonbl@redhat.com> Cc: engine-devel@ovirt.org Sent: Friday, August 30, 2013 7:56:13 PM Subject: Re: [Engine-devel] ok to sort login domains on backend?
----- Original Message ----- From: "Alon Bar-Lev" <alonbl@redhat.com> Sent: Friday, August 30, 2013 12:35:24 PM
----- Original Message -----
From: "Einav Cohen" <ecohen@redhat.com> To: "Alon Bar-Lev" <alonbl@redhat.com> Cc: "Greg Sheremeta" <gshereme@redhat.com>, engine-devel@ovirt.org Sent: Friday, August 30, 2013 5:12:37 PM Subject: Re: [Engine-devel] ok to sort login domains on backend?
----- Original Message ----- From: "Alon Bar-Lev" <alonbl@redhat.com> Sent: Friday, August 30, 2013 9:32:46 AM
----- Original Message -----
From: "Greg Sheremeta" <gshereme@redhat.com> To: engine-devel@ovirt.org Sent: Friday, August 30, 2013 3:26:48 PM Subject: [Engine-devel] ok to sort login domains on backend?
Hi,
I'm working on https://bugzilla.redhat.com/785555 -- "domain selection list in login screen should be sorted alphabetically"
I was going to put the sort logic in the web apps, but it makes sense to just put it in the backend, specifically in GetDomainListQuery. (There is already a sort there, but it needs to be tweaked to put "internal" always last.) This would affect non-webapp clients (REST API), so I want to make sure there are no objections. Unit tests pass and it seems to work fine (screen attached).
Any objections?
I think that sorting of visualization is presentation layer role.
true in general, but I think that there is no harm in returning items from the backend in some default order, especially if this is a list of simple items that have only one possible order that makes sense.
Even if that so, there is no reason to relay on it.
if this method will return a sorted list *by definition*, there would be no reason to NOT relay on it. for this particular case, I think that it would be a bit of waste if the exact same sorting logic will be duplicated across the different clients' code (including 3rd-party clients). If we can make it a little bit easier on the clients, I don't see why not to do it.
If sort is required at presentation, presentation layer should apply sort.
define "presentation"; looking at the xml response of a rest-api GET request in a browser is also "presentation", but I can't really apply sort there; yes, I can change the rest-api code to sort the results, but why not simply make it a bit easier for *all* clients, and return the results from the backend already sorted in the way which is probably the most comfortable for everyone?
[again - you are generally correct, but in this particular case, of simple business entities which have pretty much only one way of sorting that makes sense, I don't see why not make an exception and apply the sort on the backend]
Well, we can agree to disagree. RestAPI is not presentation, the fact that browser has presentation layer to interact with RestAPI does not mean that the server side is responsible on ordering etc. The RestAPI presentation layer may allow sorting. I do not think that API should have any sense of presentation ordering it only makes it more complex without a reason. Let's assume the API sort is based on plain text, and you have a bug to sort using case insensitive, so API definition should be fixed? so you pass a parameter to request specific casing? Let's assume that each domain has value and description, you agree that sort should be based on description, right? Now, let's say that description can be localized, which sort can the server apply? These are the reason why presentation layer was split out, ever since IBM Mainframe 3270 the layer is running on the client side. Regards, Alon Bar-Lev
Thanks, Greg
Greg Sheremeta Red Hat, Inc. Sr. Software Engineer, RHEV Cell: 919-807-1086 gshereme@redhat.com _______________________________________________ Engine-devel mailing list Engine-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel
_______________________________________________ Engine-devel mailing list Engine-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel
_______________________________________________ Engine-devel mailing list Engine-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel

Hi Alon, GetDomainListQuery already sorts domains by name before returning domain list to client (GetDomainListQuery:23), so what's the big deal with adding internal admin domain (ConfigValues.AdminDomain) as the last entry anyway? If I understand correctly, GetDomainListQuery already sorts domains not due to presentation purposes, but to make resulting domain list more consistent for clients to process (and humans to inspect). Vojtech ----- Original Message -----
From: "Alon Bar-Lev" <alonbl@redhat.com> To: "Einav Cohen" <ecohen@redhat.com> Cc: engine-devel@ovirt.org Sent: Friday, August 30, 2013 7:14:13 PM Subject: Re: [Engine-devel] ok to sort login domains on backend?
----- Original Message -----
From: "Einav Cohen" <ecohen@redhat.com> To: "Alon Bar-Lev" <alonbl@redhat.com> Cc: engine-devel@ovirt.org Sent: Friday, August 30, 2013 7:56:13 PM Subject: Re: [Engine-devel] ok to sort login domains on backend?
----- Original Message ----- From: "Alon Bar-Lev" <alonbl@redhat.com> Sent: Friday, August 30, 2013 12:35:24 PM
----- Original Message -----
From: "Einav Cohen" <ecohen@redhat.com> To: "Alon Bar-Lev" <alonbl@redhat.com> Cc: "Greg Sheremeta" <gshereme@redhat.com>, engine-devel@ovirt.org Sent: Friday, August 30, 2013 5:12:37 PM Subject: Re: [Engine-devel] ok to sort login domains on backend?
----- Original Message ----- From: "Alon Bar-Lev" <alonbl@redhat.com> Sent: Friday, August 30, 2013 9:32:46 AM
----- Original Message -----
From: "Greg Sheremeta" <gshereme@redhat.com> To: engine-devel@ovirt.org Sent: Friday, August 30, 2013 3:26:48 PM Subject: [Engine-devel] ok to sort login domains on backend?
Hi,
I'm working on https://bugzilla.redhat.com/785555 -- "domain selection list in login screen should be sorted alphabetically"
I was going to put the sort logic in the web apps, but it makes sense to just put it in the backend, specifically in GetDomainListQuery. (There is already a sort there, but it needs to be tweaked to put "internal" always last.) This would affect non-webapp clients (REST API), so I want to make sure there are no objections. Unit tests pass and it seems to work fine (screen attached).
Any objections?
I think that sorting of visualization is presentation layer role.
true in general, but I think that there is no harm in returning items from the backend in some default order, especially if this is a list of simple items that have only one possible order that makes sense.
Even if that so, there is no reason to relay on it.
if this method will return a sorted list *by definition*, there would be no reason to NOT relay on it. for this particular case, I think that it would be a bit of waste if the exact same sorting logic will be duplicated across the different clients' code (including 3rd-party clients). If we can make it a little bit easier on the clients, I don't see why not to do it.
If sort is required at presentation, presentation layer should apply sort.
define "presentation"; looking at the xml response of a rest-api GET request in a browser is also "presentation", but I can't really apply sort there; yes, I can change the rest-api code to sort the results, but why not simply make it a bit easier for *all* clients, and return the results from the backend already sorted in the way which is probably the most comfortable for everyone?
[again - you are generally correct, but in this particular case, of simple business entities which have pretty much only one way of sorting that makes sense, I don't see why not make an exception and apply the sort on the backend]
Well, we can agree to disagree.
RestAPI is not presentation, the fact that browser has presentation layer to interact with RestAPI does not mean that the server side is responsible on ordering etc. The RestAPI presentation layer may allow sorting.
I do not think that API should have any sense of presentation ordering it only makes it more complex without a reason.
Let's assume the API sort is based on plain text, and you have a bug to sort using case insensitive, so API definition should be fixed? so you pass a parameter to request specific casing?
Let's assume that each domain has value and description, you agree that sort should be based on description, right? Now, let's say that description can be localized, which sort can the server apply?
These are the reason why presentation layer was split out, ever since IBM Mainframe 3270 the layer is running on the client side.
Regards, Alon Bar-Lev
Thanks, Greg
Greg Sheremeta Red Hat, Inc. Sr. Software Engineer, RHEV Cell: 919-807-1086 gshereme@redhat.com _______________________________________________ Engine-devel mailing list Engine-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel
_______________________________________________ Engine-devel mailing list Engine-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel
_______________________________________________ Engine-devel mailing list Engine-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel
_______________________________________________ Engine-devel mailing list Engine-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel

----- Original Message -----
From: "Vojtech Szocs" <vszocs@redhat.com> To: "Alon Bar-Lev" <alonbl@redhat.com> Cc: "Einav Cohen" <ecohen@redhat.com>, engine-devel@ovirt.org Sent: Monday, September 2, 2013 4:18:22 PM Subject: Re: [Engine-devel] ok to sort login domains on backend?
Hi Alon,
GetDomainListQuery already sorts domains by name before returning domain list to client (GetDomainListQuery:23), so what's the big deal with adding internal admin domain (ConfigValues.AdminDomain) as the last entry anyway?
No big deal... :) We were asked for opinions... So you have mine... I have strict rules for cases such of this, and I do not really interested what is currently implemented as it may be completely wrong (in my view). Presentation layer should perform presentation adjustments. In fat client application (ours) it is very easy to know where presentation layer is. In server pages application it is also very easy for most people to understand that the jsp is presentation layer... You can safely ignore. Regards, Alon
If I understand correctly, GetDomainListQuery already sorts domains not due to presentation purposes, but to make resulting domain list more consistent for clients to process (and humans to inspect).
Vojtech
----- Original Message -----
From: "Alon Bar-Lev" <alonbl@redhat.com> To: "Einav Cohen" <ecohen@redhat.com> Cc: engine-devel@ovirt.org Sent: Friday, August 30, 2013 7:14:13 PM Subject: Re: [Engine-devel] ok to sort login domains on backend?
----- Original Message -----
From: "Einav Cohen" <ecohen@redhat.com> To: "Alon Bar-Lev" <alonbl@redhat.com> Cc: engine-devel@ovirt.org Sent: Friday, August 30, 2013 7:56:13 PM Subject: Re: [Engine-devel] ok to sort login domains on backend?
----- Original Message ----- From: "Alon Bar-Lev" <alonbl@redhat.com> Sent: Friday, August 30, 2013 12:35:24 PM
----- Original Message -----
From: "Einav Cohen" <ecohen@redhat.com> To: "Alon Bar-Lev" <alonbl@redhat.com> Cc: "Greg Sheremeta" <gshereme@redhat.com>, engine-devel@ovirt.org Sent: Friday, August 30, 2013 5:12:37 PM Subject: Re: [Engine-devel] ok to sort login domains on backend?
----- Original Message ----- From: "Alon Bar-Lev" <alonbl@redhat.com> Sent: Friday, August 30, 2013 9:32:46 AM
----- Original Message ----- > From: "Greg Sheremeta" <gshereme@redhat.com> > To: engine-devel@ovirt.org > Sent: Friday, August 30, 2013 3:26:48 PM > Subject: [Engine-devel] ok to sort login domains on backend? > > Hi, > > I'm working on https://bugzilla.redhat.com/785555 -- "domain > selection > list > in login screen should be sorted alphabetically" > > I was going to put the sort logic in the web apps, but it makes > sense > to > just > put it in the backend, specifically in GetDomainListQuery. (There > is > already > a sort there, but it needs to be tweaked to put "internal" always > last.) > This would affect non-webapp clients (REST API), so I want to > make > sure > there are no objections. Unit tests pass and it seems to work > fine > (screen > attached). > > Any objections?
I think that sorting of visualization is presentation layer role.
true in general, but I think that there is no harm in returning items from the backend in some default order, especially if this is a list of simple items that have only one possible order that makes sense.
Even if that so, there is no reason to relay on it.
if this method will return a sorted list *by definition*, there would be no reason to NOT relay on it. for this particular case, I think that it would be a bit of waste if the exact same sorting logic will be duplicated across the different clients' code (including 3rd-party clients). If we can make it a little bit easier on the clients, I don't see why not to do it.
If sort is required at presentation, presentation layer should apply sort.
define "presentation"; looking at the xml response of a rest-api GET request in a browser is also "presentation", but I can't really apply sort there; yes, I can change the rest-api code to sort the results, but why not simply make it a bit easier for *all* clients, and return the results from the backend already sorted in the way which is probably the most comfortable for everyone?
[again - you are generally correct, but in this particular case, of simple business entities which have pretty much only one way of sorting that makes sense, I don't see why not make an exception and apply the sort on the backend]
Well, we can agree to disagree.
RestAPI is not presentation, the fact that browser has presentation layer to interact with RestAPI does not mean that the server side is responsible on ordering etc. The RestAPI presentation layer may allow sorting.
I do not think that API should have any sense of presentation ordering it only makes it more complex without a reason.
Let's assume the API sort is based on plain text, and you have a bug to sort using case insensitive, so API definition should be fixed? so you pass a parameter to request specific casing?
Let's assume that each domain has value and description, you agree that sort should be based on description, right? Now, let's say that description can be localized, which sort can the server apply?
These are the reason why presentation layer was split out, ever since IBM Mainframe 3270 the layer is running on the client side.
Regards, Alon Bar-Lev
> > Thanks, > Greg > > > Greg Sheremeta > Red Hat, Inc. > Sr. Software Engineer, RHEV > Cell: 919-807-1086 > gshereme@redhat.com > _______________________________________________ > Engine-devel mailing list > Engine-devel@ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel > _______________________________________________ Engine-devel mailing list Engine-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel
_______________________________________________ Engine-devel mailing list Engine-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel
_______________________________________________ Engine-devel mailing list Engine-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel
participants (4)
-
Alon Bar-Lev
-
Einav Cohen
-
Greg Sheremeta
-
Vojtech Szocs