The ProtectedCommand offer two protection to the developper. The first is that the developper can use a validateNotificationBody() method to validate the notification body.
The second is that the execute method use a try catch to around the call to a executeSafely method that embbed the command logic.
With these two behaviour decoupled from the application logic, you can more easily implements a coherent error handling.
public class AddSecurityCommand extends ProtectedCommand {
override public function validateNotificationBody(data : Object) : void {
assertTrue(data != null, "The notification's body is null");
assertTrue(data.label != null, "The security label is null");
assertTrue(data.currencyCode != null, "The currencyCode is null");
assertTrue(data.isinCode != null, "The isinCode is null");
assertTrue(data.currencyCode is String, "The currencyCode is not a String " + data["currencyCode"].toString());
}
override public function executeSafely(note : INotification) : void {
/* At this point, we know that the Notification body has pass the
* validation. We can use it safely. If an error is throwed by this
* method, it will be trapped by the parent execute method.
*/
var data : Object = note.getBody();
}
}