in src/main/java/com/amazonaws/services/simpleworkflow/flow/pojo/POJOActivityImplementationFactory.java [444:485]
private static ActivityTypeExecutionOptions createExecutionOptions(ActivityType activityType, Method activityImplementation) {
assert (activityType != null);
ActivityTypeExecutionOptions executionOptions = new ActivityTypeExecutionOptions();
if (activityImplementation != null) {
ManualActivityCompletion manualCompletion = activityImplementation.getAnnotation(ManualActivityCompletion.class);
// Iterate our parent classes as well
Class<?> cl = activityImplementation.getDeclaringClass();
while(manualCompletion == null) {
cl = cl.getSuperclass();
if(cl == null || cl.equals(Object.class)) {
break;
}
try {
Method equivalentMethod = cl.getDeclaredMethod(activityImplementation.getName(), activityImplementation.getParameterTypes());
if (equivalentMethod != null) {
manualCompletion = equivalentMethod.getAnnotation(ManualActivityCompletion.class);
}
} catch (NoSuchMethodException e) {
// No problem
}
}
executionOptions.setManualActivityCompletion(manualCompletion != null);
ActivityExecutionOptions options = activityImplementation.getAnnotation(ActivityExecutionOptions.class);
if (options == null) {
//TODO: Check superclasses for the annotation
options = activityImplementation.getDeclaringClass().getAnnotation(ActivityExecutionOptions.class);
}
if (options != null) {
ActivityCompletionRetryOptions completionRetryOptions = options.completionRetryOptions();
ActivityTypeCompletionRetryOptions typeCompletionRetryOptions = completionRetryOptionsFromAnnotation(completionRetryOptions);
executionOptions.setCompletionRetryOptions(typeCompletionRetryOptions);
ActivityCompletionRetryOptions failureRetryOptions = options.failureRetryOptions();
ActivityTypeCompletionRetryOptions typeFailureRetryOptions = completionRetryOptionsFromAnnotation(failureRetryOptions);
executionOptions.setFailureRetryOptions(typeFailureRetryOptions);
}
}
return executionOptions;
}