in src/main/java/com/amazonaws/services/simpleworkflow/flow/pojo/POJOActivityImplementation.java [64:92]
protected String execute(String input, ActivityExecutionContext context) throws ActivityFailureException, CancellationException {
Object[] inputParameters = ThreadLocalMetrics.getMetrics().recordSupplier(
() -> converter.fromData(input, Object[].class),
converter.getClass().getSimpleName() + "@" + MetricName.Operation.DATA_CONVERTER_DESERIALIZE.getName(),
TimeUnit.MILLISECONDS
);
CurrentActivityExecutionContext.set(context);
Object result = null;
try {
// Fill missing parameters with default values to make addition of new parameters backward compatible
inputParameters = FlowHelpers.getInputParameters(activity.getParameterTypes(), inputParameters);
result = activity.invoke(activitiesImplementationObject, inputParameters);
}
catch (InvocationTargetException invocationException) {
throwActivityFailureException(invocationException.getTargetException() != null ? invocationException.getTargetException()
: invocationException);
}
catch (IllegalArgumentException | IllegalAccessException illegalArgumentException) {
throwActivityFailureException(illegalArgumentException);
} finally {
CurrentActivityExecutionContext.unset();
}
final Object finalResult = result;
return ThreadLocalMetrics.getMetrics().recordSupplier(
() -> converter.toData(finalResult),
converter.getClass().getSimpleName() + "@" + MetricName.Operation.DATA_CONVERTER_SERIALIZE.getName(),
TimeUnit.MILLISECONDS
);
}