private static ActivityTypeExecutionOptions createExecutionOptions()

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;
    }