public BridgeFailedTask( Optional <IActiveContext> activeContext, string id, string message, string description, string reason, byte[] data) { _activeContext = activeContext; Id = id; Message = message; Description = Optional <string> .OfNullable(description); Reason = Optional <string> .OfNullable(reason); if (data != null) { var avroFailedTask = AvroJsonSerializer <AvroFailedTask> .FromBytes(data); if (!id.Equals(avroFailedTask.identifier)) { Log.Log(Level.Error, "Task error id {0} does not match task id {1}", avroFailedTask.identifier, id); } // Data is simply the serialized Exception.ToString. Data = Optional <byte[]> .OfNullable(avroFailedTask.data); // Message can be overwritten in Java, if the C# Message is null and the Task failure is caused by an Evaluator failure. Message = string.IsNullOrWhiteSpace(avroFailedTask.message) ? "No message in Failed Task." : avroFailedTask.message; // Gets the Exception. _cause = GetCause(avroFailedTask.cause, ByteUtilities.ByteArraysToString(avroFailedTask.data)); // This is always empty, even in Java. Description = Optional <string> .Empty(); } else { Log.Log(Level.Warning, "no exception data"); Data = Optional <byte[]> .Empty(); } }
public FailedTask(IFailedTaskClr2Java failedTaskClr2Java) { var serializedInfo = failedTaskClr2Java.GetFailedTaskSerializedAvro(); var avroFailedTask = AvroJsonSerializer <AvroFailedTask> .FromBytes(serializedInfo); Id = avroFailedTask.identifier; // Data is simply the serialized Exception.ToString. Data = Optional <byte[]> .OfNullable(avroFailedTask.data); // Message can be overwritten in Java, if the C# Message is null and the Task failure is caused by an Evaluator failure. Message = string.IsNullOrWhiteSpace(avroFailedTask.message) ? "No message in Failed Task." : avroFailedTask.message; // Gets the Exception. _cause = GetCause(avroFailedTask.cause, ByteUtilities.ByteArraysToString(avroFailedTask.data)); // This is always empty, even in Java. Description = Optional <string> .Empty(); ActiveContextClr2Java = failedTaskClr2Java.GetActiveContext(); }