SNMP Alarm Support

Yes, I think so. The problem with this design is that you can have an AlarmDef which isn't valid - for example, you could end up with an AlarmDef with no cause, which doesn't make sense. Having all the parameters set in the constructor ensures that your AlarmDef is always valid - you can't miss out a setter and introduce bugs.

I dug around for references on this sort of thing and found http://www.artima.com/designtechniques/desinitP.html - the bit discussing this approach is about 3/4ths of the way down starting at "One other option you could offer a client programmer is to create a CoffeeCup object with no specific size".

If this change causes a ripple through the code, I think that's all the more reason to change it - that just means that there are a lot of places in the code where we could forget to set the cause and are vulnerable to bugs.