Repository: incubator-reef
Updated Branches:
  refs/heads/master e0a00f484 -> 6eefbf1cc


[REEF-679] Made IContext immutable

This makes all fields in `IContext` immutable. This change is reflected in the
implementation classes. Also, those are now `internal`, which prompted a change
to `(I)FailedEvaluator` which wasn't coded against the context interfaces.

JIRA:
  [REEF-679](https://issues.apache.org/jira/browse/REEF-679)
  [REEF-666](https://issues.apache.org/jira/browse/REEF-666)

Pull Request:
  This closes #498


Project: http://git-wip-us.apache.org/repos/asf/incubator-reef/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-reef/commit/6eefbf1c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-reef/tree/6eefbf1c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-reef/diff/6eefbf1c

Branch: refs/heads/master
Commit: 6eefbf1cce4042c3603bf84430097b1be6d4d860
Parents: e0a00f4
Author: Markus Weimer <[email protected]>
Authored: Wed Sep 16 17:23:24 2015 -0700
Committer: Andrew Chung <[email protected]>
Committed: Fri Sep 18 16:59:47 2015 -0700

----------------------------------------------------------------------
 .../Bridge/Events/ActiveContext.cs              | 42 +++++---------
 .../Bridge/Events/ClosedContext.cs              | 52 ++++++-----------
 .../Bridge/Events/FailedContext.cs              | 61 +++++---------------
 .../Bridge/Events/FailedEvaluator.cs            | 38 ++++++++----
 .../Org.Apache.REEF.Driver/Context/IContext.cs  |  6 +-
 .../Evaluator/IFailedEvaluator.cs               | 23 ++++++--
 6 files changed, 95 insertions(+), 127 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/6eefbf1c/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ActiveContext.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ActiveContext.cs 
b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ActiveContext.cs
index a5fe63b..6d3f1cb 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ActiveContext.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ActiveContext.cs
@@ -33,10 +33,9 @@ namespace Org.Apache.REEF.Driver.Bridge.Events
     internal class ActiveContext : IActiveContext
     {
         private static readonly Logger LOGGER = 
Logger.GetLogger(typeof(ActiveContext));
-
         private readonly AvroConfigurationSerializer _serializer;
 
-        public ActiveContext(IActiveContextClr2Java clr2Java)
+        internal ActiveContext(IActiveContextClr2Java clr2Java)
         {
             InstanceId = Guid.NewGuid().ToString("N");
             Clr2Java = clr2Java;
@@ -44,48 +43,35 @@ namespace Org.Apache.REEF.Driver.Bridge.Events
         }
 
         [DataMember]
-        public string InstanceId { get; set; }
+        public string InstanceId { get; private set; }
+
+        private IActiveContextClr2Java Clr2Java { get; set; }
 
         public string Id
         {
-            get
-            {
-                return Clr2Java.GetId();
-            }
+            get { return Clr2Java.GetId(); }
         }
 
         public string EvaluatorId
         {
-            get
-            {
-                return Clr2Java.GetEvaluatorId();
-            }
-
-            set
-            {
-            }
+            get { return Clr2Java.GetEvaluatorId(); }
         }
 
-        public Optional<string> ParentId { get; set; }
+        public Optional<string> ParentId
+        {
+            // TODO[REEF-760]: Implement
+            get { return Optional<string>.Empty(); }
+        }
 
         public IEvaluatorDescriptor EvaluatorDescriptor
         {
-            get
-            {
-                return Clr2Java.GetEvaluatorDescriptor();
-            }
-
-            set
-            {
-            }
+            get { return Clr2Java.GetEvaluatorDescriptor(); }
         }
 
-        private IActiveContextClr2Java Clr2Java { get; set; }
-
         public void SubmitTask(IConfiguration taskConfiguration)
         {
             LOGGER.Log(Level.Info, "ActiveContext::SubmitTask");
-            string task = _serializer.ToString(taskConfiguration);
+            var task = _serializer.ToString(taskConfiguration);
             LOGGER.Log(Level.Verbose, "serialized taskConfiguration: " + task);
             Clr2Java.SubmitTask(task);
         }
@@ -111,4 +97,4 @@ namespace Org.Apache.REEF.Driver.Bridge.Events
             throw new NotImplementedException();
         }
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/6eefbf1c/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ClosedContext.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ClosedContext.cs 
b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ClosedContext.cs
index 2aca0d2..27f90fa 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ClosedContext.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ClosedContext.cs
@@ -26,13 +26,12 @@ using Org.Apache.REEF.Utilities;
 
 namespace Org.Apache.REEF.Driver.Bridge.Events
 {
-    public class ClosedContext : IClosedContext
+    internal sealed class ClosedContext : IClosedContext
     {
-        private readonly string _id;
-
         private readonly string _evaluatorId;
+        private readonly string _id;
 
-        public ClosedContext(IClosedContextClr2Java clr2java)
+        internal ClosedContext(IClosedContextClr2Java clr2java)
         {
             InstanceId = Guid.NewGuid().ToString("N");
             _id = clr2java.GetId();
@@ -40,52 +39,35 @@ namespace Org.Apache.REEF.Driver.Bridge.Events
         }
 
         [DataMember]
-        public string InstanceId { get; set; }
+        public string InstanceId { get; private set; }
+
+        private IActiveContextClr2Java ParentContextClr2Java { get; set; }
+        private IClosedContextClr2Java ClosedContextClr2JavaClr2Java { get; 
set; }
 
         public string Id
         {
-            get
-            {
-                return _id;
-            }
+            get { return _id; }
         }
 
         public string EvaluatorId
         {
-            get
-            {
-                return _evaluatorId;
-            }
-
-            set
-            {
-            }
+            get { return _evaluatorId; }
         }
 
-        public Optional<string> ParentId { get; set; }
+        public Optional<string> ParentId
+        {
+            // TODO[REEF-762]: Implement
+            get { return Optional<string>.Empty(); }
+        }
 
         public IEvaluatorDescriptor EvaluatorDescriptor
         {
-            get
-            {
-                return ClosedContextClr2JavaClr2Java.GetEvaluatorDescriptor();
-            }
-
-            set
-            {
-            }
+            get { return 
ClosedContextClr2JavaClr2Java.GetEvaluatorDescriptor(); }
         }
 
         public IActiveContext ParentContext
         {
-            get
-            {
-                return new ActiveContext(ParentContextClr2Java);
-            }
+            get { return new ActiveContext(ParentContextClr2Java); }
         }
-
-        private IActiveContextClr2Java ParentContextClr2Java { get; set; }
-
-        private IClosedContextClr2Java ClosedContextClr2JavaClr2Java { get; 
set; }
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/6eefbf1c/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/FailedContext.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/FailedContext.cs 
b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/FailedContext.cs
index 0fe8819..e7ddc17 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/FailedContext.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/FailedContext.cs
@@ -24,84 +24,55 @@ using Org.Apache.REEF.Utilities;
 
 namespace Org.Apache.REEF.Driver.Bridge.Events
 {
-    public class FailedContext : IFailedContext
+    internal class FailedContext : IFailedContext
     {
-        private readonly string _id;
-
         private readonly string _evaluatorId;
+        private readonly string _id;
+        private readonly Optional<string> _parentId;
 
-        private readonly string _parentId;
-
-        public FailedContext(IFailedContextClr2Java clr2Java)
+        internal FailedContext(IFailedContextClr2Java clr2Java)
         {
             _id = clr2Java.GetId();
             _evaluatorId = clr2Java.GetEvaluatorId();
-            _parentId = clr2Java.GetParentId();
+            _parentId = string.IsNullOrEmpty(clr2Java.GetParentId())
+                ? Optional<string>.Empty()
+                : Optional<string>.Of(clr2Java.GetParentId());
             FailedContextClr2Java = clr2Java;
         }
 
+        private IFailedContextClr2Java FailedContextClr2Java { get; set; }
+
         public string Id
         {
-            get
-            {
-                return _id;
-            }
+            get { return _id; }
         }
 
         public string EvaluatorId
         {
-            get
-            {
-                return _evaluatorId;
-            }
-
-            set
-            {
-            }
+            get { return _evaluatorId; }
         }
 
         public Optional<string> ParentId
         {
-            get
-            {
-                return string.IsNullOrEmpty(_parentId) ? 
-                    Optional<string>.Empty() : 
-                    Optional<string>.Of(_parentId);
-            }
-
-            set
-            {
-            }
+            get { return _parentId; }
         }
 
         public IEvaluatorDescriptor EvaluatorDescriptor
         {
-            get
-            {
-                return FailedContextClr2Java.GetEvaluatorDescriptor();
-            }
-
-            set
-            {
-            }
+            get { return FailedContextClr2Java.GetEvaluatorDescriptor(); }
         }
 
         public Optional<IActiveContext> ParentContext
         {
             get
             {
-                IActiveContextClr2Java context = 
FailedContextClr2Java.GetParentContext();
+                var context = FailedContextClr2Java.GetParentContext();
                 if (context != null)
                 {
                     return Optional<IActiveContext>.Of(new 
ActiveContext(context));
                 }
-                else
-                {
-                    return Optional<IActiveContext>.Empty();
-                }
+                return Optional<IActiveContext>.Empty();
             }
         }
-
-        private IFailedContextClr2Java FailedContextClr2Java { get; set; }
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/6eefbf1c/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/FailedEvaluator.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/FailedEvaluator.cs 
b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/FailedEvaluator.cs
index 8ba8730..5df22e4 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/FailedEvaluator.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/FailedEvaluator.cs
@@ -21,6 +21,7 @@ using System;
 using System.Collections.Generic;
 using System.Runtime.Serialization;
 using Org.Apache.REEF.Driver.Bridge.Clr2java;
+using Org.Apache.REEF.Driver.Context;
 using Org.Apache.REEF.Driver.Evaluator;
 using Org.Apache.REEF.Driver.Task;
 using Org.Apache.REEF.Utilities;
@@ -30,35 +31,50 @@ using Org.Apache.REEF.Utilities.Logging;
 namespace Org.Apache.REEF.Driver.Bridge.Events
 {
     [DataContract]
-    internal class FailedEvaluator : IFailedEvaluator
+    internal sealed class FailedEvaluator : IFailedEvaluator
     {
         private static readonly Logger LOGGER = 
Logger.GetLogger(typeof(FailedEvaluator));
+        private readonly string _id;
 
         public FailedEvaluator(IFailedEvaluatorClr2Java clr2Java)
         {
             InstanceId = Guid.NewGuid().ToString("N");
             FailedEvaluatorClr2Java = clr2Java;
             EvaluatorRequestorClr2Java = 
FailedEvaluatorClr2Java.GetEvaluatorRequestor();
-            Id = FailedEvaluatorClr2Java.GetId();
+            _id = FailedEvaluatorClr2Java.GetId();
         }
 
         [DataMember]
         public string InstanceId { get; set; }
 
-        public string Id { get; private set; }
-
-        public EvaluatorException EvaluatorException { get; set; }
-
-        public List<FailedContext> FailedContexts { get; set; }
-
-        public Optional<IFailedTask> FailedTask { get; set; }
-
         [DataMember]
         private IFailedEvaluatorClr2Java FailedEvaluatorClr2Java { get; set; }
 
         [DataMember]
         private IEvaluatorRequestorClr2Java EvaluatorRequestorClr2Java { get; 
set; }
 
+        public string Id
+        {
+            get { return _id; }
+        }
+
+        //TODO[REEF-769]: Implement
+        public EvaluatorException EvaluatorException
+        {
+            get { return null; }
+        }
+
+        //TODO[REEF-769]: Implement
+        public IList<IFailedContext> FailedContexts
+        {
+            get { return new List<IFailedContext>(0); }
+        }
+        //TODO[REEF-769]: Implement
+        public Optional<IFailedTask> FailedTask
+        {
+            get { return Optional<IFailedTask>.Empty(); }
+        }
+
         public IEvaluatorRequestor GetEvaluatorRequetor()
         {
             if (EvaluatorRequestorClr2Java == null)
@@ -68,4 +84,4 @@ namespace Org.Apache.REEF.Driver.Bridge.Events
             return new EvaluatorRequestor(EvaluatorRequestorClr2Java);
         }
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/6eefbf1c/lang/cs/Org.Apache.REEF.Driver/Context/IContext.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Context/IContext.cs 
b/lang/cs/Org.Apache.REEF.Driver/Context/IContext.cs
index fd6006c..7f393b5 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Context/IContext.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/Context/IContext.cs
@@ -30,16 +30,16 @@ namespace Org.Apache.REEF.Driver.Context
         /// <summary>
         /// the identifier of the Evaluator this EvaluatorContext is 
instantiated on.
         /// </summary>
-        string EvaluatorId { get; set; }
+        string EvaluatorId { get; }
 
         /// <summary>
         /// ID of the parent context, if there is any.
         /// </summary>
-        Optional<string> ParentId { get; set; }
+        Optional<string> ParentId { get; }
 
         /// <summary>
         /// descriptor of the Evaluator this Context is on.
         /// </summary>
-        IEvaluatorDescriptor EvaluatorDescriptor { get; set; }
+        IEvaluatorDescriptor EvaluatorDescriptor { get; }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/6eefbf1c/lang/cs/Org.Apache.REEF.Driver/Evaluator/IFailedEvaluator.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Driver/Evaluator/IFailedEvaluator.cs 
b/lang/cs/Org.Apache.REEF.Driver/Evaluator/IFailedEvaluator.cs
index bbb06e0..52becb0 100644
--- a/lang/cs/Org.Apache.REEF.Driver/Evaluator/IFailedEvaluator.cs
+++ b/lang/cs/Org.Apache.REEF.Driver/Evaluator/IFailedEvaluator.cs
@@ -19,7 +19,7 @@
 
 using System;
 using System.Collections.Generic;
-using Org.Apache.REEF.Driver.Bridge.Events;
+using Org.Apache.REEF.Driver.Context;
 using Org.Apache.REEF.Driver.Task;
 using Org.Apache.REEF.Utilities;
 
@@ -28,15 +28,28 @@ namespace Org.Apache.REEF.Driver.Evaluator
     /// <summary>
     /// Represents an Evaluator that became unavailable.
     /// </summary>
+    /// <remarks>
+    /// As per REEF-769, this interface isn't actually implemented beyond the 
Id property.
+    /// </remarks>
     public interface IFailedEvaluator : IIdentifiable
     {
-        EvaluatorException EvaluatorException { get; set; }
+        /// <summary>
+        /// The exception captured on the Evaluator or null if none is 
available.
+        /// </summary>
+        EvaluatorException EvaluatorException { get; }
 
-        List<FailedContext> FailedContexts { get; set; }
+        /// <summary>
+        /// The list of contexts that were active on the Evaluator when it 
crashed.
+        /// </summary>
+        /// <remarks>The list is empty if there were none.</remarks>
+        IList<IFailedContext> FailedContexts { get; }
 
-        Optional<IFailedTask> FailedTask { get; set; }
+        /// <summary>
+        /// The task that failed with the Evaluator if there was one.
+        /// </summary>
+        Optional<IFailedTask> FailedTask { get; }
 
         [Obsolete("Will be removed after 0.13. Have an instance injected 
instead.")]
         IEvaluatorRequestor GetEvaluatorRequetor();
     }
-}
+}
\ No newline at end of file

Reply via email to