+ BeanValidationResult result =
+ new BeanValidator().validateTop(ControlLoopOperationParams.class.getSimpleName(), this);
+
+ // validate that we have a request ID, or that we can get it from the context's
+ // event
+
+ if (context == null) {
+ // no context specified - invoker must provide a request ID then
+ result.validateNotNull("requestId", requestId);
+
+ } else if (requestId == null) {
+ // have a context, but no request ID - check the context's event for the
+ // request ID
+ BeanValidationResult contextResult = new BeanValidationResult("context", context);
+ VirtualControlLoopEvent event = context.getEvent();
+ contextResult.validateNotNull("event", event);
+
+ if (event != null) {
+ // cache the request id for later use
+ BeanValidationResult eventResult = new BeanValidationResult("event", event);
+ eventResult.validateNotNull("requestId", event.getRequestId());
+
+ contextResult.addResult(eventResult);
+ }
+
+ result.addResult(contextResult);
+ }
+
+ return result;