예제 #1
0
        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();
            }
        }
예제 #2
0
        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();
        }