Thanks to jsherrill's insight, I realized that one can now do customized "RhnSets" based on parameters.. With respect to this I added a new method to RhnSetDecl .. Here is an example use

 RhnSetDecl.ERRATA.createCustom(sid, archId, packageName);


Basically the createCustom method takes the sid,archId and packageName generates a hashCode out of it and appends to the label to make the RhnSet Declaration unique to the input. In the above case the label will be "errata_list" + hash codes of sid archId and packagename (in what ever order the HashCodeBuilder combines it).. In our code every list using a set has set label, but this fix will help us making that set more unique across different keys. In the past we've been bitten by bugs where a set selections was getting duplicated across 2 or 3 individual systems that were going thru the same page flow at the same time.. This fix will make that issue go away in the future sets..


Partha


Partha Aji wrote:
I added to Spacewalk 0.3 a "sessionset". Basically these are an alternative to RhnSets and must replace them for 90% of the cases...
For more info...
https://fedorahosted.org/spacewalk/wiki/ListTag#SessionSet

Basic advantages over our traditional Rhnsets
1) Uses a session lifecyle.. So when the session dies the checkbox selections the user makes dies with it..

2) Flexible keying.. Certain lists need more than 2 keys to uniquely identify each row.. With the previous db set you were stuck with max 2 keys problem... With the new Session sets we use a simple string that can be as big as we want as the key. Given this nature one can conceive of using keys like "id1|id2|id3" or even some sort of json like notation, and embed multiple keys (even though that may look overengineered). What the key means to the world is upto the DTO and ActionManager itself.. The tag does not assume any particualr format...

3) Its more minimalist than the rhnSet, in the sense it uses java.util.Set no fancy RhnSetManager, RhnSet, RhnSetElement, RhnSetDecl, SetCleanup, keys are just simple strings ... You write code as if you are dealing with a regular set..

Disadvantages:
1) Needs the new list tag.. Basically the older list tag made the taglibs responsible for set handling making it really hard to work it out there.. 2) If the set you populate this page is needed by a Perl page you have no option but to go with RhnSet...

Other Observations:
If your set is needed by another action that is expecting the RhnSet, then you 'd either need to change that also to use the session set.. For example we have these confirm pages.. The confirm pages share a set with the list pages.. So we must just make sure confirm page points to the same declaration label ....

Look at the wiki page.. Feel free to ask questions on this...
https://fedorahosted.org/spacewalk/wiki/ListTag#SessionSet

Partha

_______________________________________________
Spacewalk-devel mailing list
Spacewalk-devel@redhat.com
https://www.redhat.com/mailman/listinfo/spacewalk-devel


_______________________________________________
Spacewalk-devel mailing list
Spacewalk-devel@redhat.com
https://www.redhat.com/mailman/listinfo/spacewalk-devel

Reply via email to