in src/main/java/com/amazonaws/services/simpleworkflow/flow/pojo/POJOWorkflowDefinition.java [131:163]
public void signalRecieved(String signalName, String details) throws WorkflowException {
MethodConverterPair signalMethod = signals.get(signalName);
if (signalMethod != null) {
DataConverter c = signalMethod.getConverter();
if (c == null) {
c = converter;
}
Method method = signalMethod.getMethod();
final DataConverter delegatedConverter = c;
final Object[] parameters = ThreadLocalMetrics.getMetrics().recordSupplier(
() -> delegatedConverter.fromData(details, Object[].class),
delegatedConverter.getClass().getSimpleName() + "@" + MetricName.Operation.DATA_CONVERTER_DESERIALIZE.getName(),
TimeUnit.MILLISECONDS
);
new TryCatch() {
@Override
protected void doTry() throws Throwable {
invokeMethod(method, parameters);
}
@Override
protected void doCatch(Throwable e) throws Throwable {
throwWorkflowException(delegatedConverter, e);
throw new IllegalStateException("Unreacheable");
}
};
}
else {
// TODO: Unhandled signal
}
}