You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@reef.apache.org by af...@apache.org on 2015/11/20 01:47:49 UTC

incubator-reef git commit: [REEF-962] Use enum for language

Repository: incubator-reef
Updated Branches:
  refs/heads/master f4e486918 -> 2e3e40f5c


[REEF-962] Use enum for language

Added enum definition for Languages
Set proper default where the language is used
Updated test cases

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

This closes #658


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

Branch: refs/heads/master
Commit: 2e3e40f5c3f7a0cacd846e7316435da8f34f8012
Parents: f4e4869
Author: Julia Wang <ju...@microsoft.com>
Authored: Wed Nov 18 22:02:04 2015 -0800
Committer: Andrew Chung <af...@gmail.com>
Committed: Thu Nov 19 16:46:51 2015 -0800

----------------------------------------------------------------------
 .../Evaluator/Utils/NamedparameterAlias.cs      | 18 ++++++-----
 .../EvaluatorConfigurationsTests.cs             |  6 ++--
 .../ClassHierarchy/TestNamedParameter.cs        | 10 +++---
 .../Configuration/TestAvroConfiguration.cs      |  3 +-
 .../Annotations/NamedParameter.cs               |  6 ++--
 .../Formats/AvroConfigurationSerializer.cs      |  6 ++--
 .../ClassHierarchy/AvroClassHierarchy.cs        |  4 +--
 .../ClassHierarchy/ClassHierarchyImpl.cs        |  4 +--
 .../ClassHierarchy/NamedParameterNodeImpl.cs    | 14 +++------
 .../Org.Apache.REEF.Tang.csproj                 |  1 +
 .../Protobuf/ProtocolBufferClassHierarchy.cs    | 29 ++++++++++++------
 .../Types/INamedParameterNode.cs                |  4 +--
 lang/cs/Org.Apache.REEF.Tang/Util/Language.cs   | 32 ++++++++++++++++++++
 .../Remote/Impl/RemoteEvent.cs                  |  2 +-
 14 files changed, 90 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/2e3e40f5/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Utils/NamedparameterAlias.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Utils/NamedparameterAlias.cs b/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Utils/NamedparameterAlias.cs
index 4fe524f..25c010b 100644
--- a/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Utils/NamedparameterAlias.cs
+++ b/lang/cs/Org.Apache.REEF.Common/Runtime/Evaluator/Utils/NamedparameterAlias.cs
@@ -19,45 +19,47 @@
 
 using Org.Apache.REEF.Tang.Annotations;
 using Org.Apache.REEF.Tang.Formats;
+using Org.Apache.REEF.Tang.Types;
+using Org.Apache.REEF.Tang.Util;
 
 namespace Org.Apache.REEF.Common.Runtime.Evaluator.Utils
 {
-    [NamedParameter(alias: "org.apache.reef.runtime.common.evaluator.parameters.ApplicationIdentifier", aliasLanguage: AvroConfigurationSerializer.Java)]
+    [NamedParameter(alias: "org.apache.reef.runtime.common.evaluator.parameters.ApplicationIdentifier", aliasLanguage: Language.Java)]
     public sealed class ApplicationIdentifier : Name<string>
     {
     }
 
-    [NamedParameter(alias: "org.apache.reef.runtime.common.evaluator.parameters.DriverRemoteIdentifier", aliasLanguage: AvroConfigurationSerializer.Java)]
+    [NamedParameter(alias: "org.apache.reef.runtime.common.evaluator.parameters.DriverRemoteIdentifier", aliasLanguage: Language.Java)]
     public sealed class DriverRemoteIdentifier : Name<string>
     {
     }
 
-    [NamedParameter(alias: "org.apache.reef.runtime.common.evaluator.parameters.EvaluatorIdentifier", aliasLanguage: AvroConfigurationSerializer.Java)]
+    [NamedParameter(alias: "org.apache.reef.runtime.common.evaluator.parameters.EvaluatorIdentifier", aliasLanguage: Language.Java)]
     public sealed class EvaluatorIdentifier : Name<string>
     {
     }
 
-    [NamedParameter(alias: "org.apache.reef.runtime.common.evaluator.parameters.InitialTaskConfiguration", aliasLanguage: AvroConfigurationSerializer.Java)]
+    [NamedParameter(alias: "org.apache.reef.runtime.common.evaluator.parameters.InitialTaskConfiguration", aliasLanguage: Language.Java)]
     public sealed class InitialTaskConfiguration : Name<string>
     {
     }
 
-    [NamedParameter(alias: "org.apache.reef.runtime.common.evaluator.parameters.RootContextConfiguration", aliasLanguage: AvroConfigurationSerializer.Java)]
+    [NamedParameter(alias: "org.apache.reef.runtime.common.evaluator.parameters.RootContextConfiguration", aliasLanguage: Language.Java)]
     public sealed class RootContextConfiguration : Name<string>
     {
     }
 
-    [NamedParameter(alias: "org.apache.reef.runtime.common.evaluator.parameters.RootServiceConfiguration", aliasLanguage: AvroConfigurationSerializer.Java)]
+    [NamedParameter(alias: "org.apache.reef.runtime.common.evaluator.parameters.RootServiceConfiguration", aliasLanguage: Language.Java)]
     public sealed class RootServiceConfiguration : Name<string>
     {
     }
 
-    [NamedParameter(alias: "org.apache.reef.runtime.common.launch.parameters.ErrorHandlerRID", aliasLanguage: AvroConfigurationSerializer.Java)]
+    [NamedParameter(alias: "org.apache.reef.runtime.common.launch.parameters.ErrorHandlerRID", aliasLanguage: Language.Java)]
     public sealed class ErrorHandlerRid : Name<string>
     {
     }
 
-    [NamedParameter(alias: "org.apache.reef.runtime.common.launch.parameters.LaunchID", aliasLanguage: AvroConfigurationSerializer.Java)]
+    [NamedParameter(alias: "org.apache.reef.runtime.common.launch.parameters.LaunchID", aliasLanguage: Language.Java)]
     public sealed class LaunchId : Name<string>
     {
     }

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/2e3e40f5/lang/cs/Org.Apache.REEF.Evaluator.Tests/EvaluatorConfigurationsTests.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Evaluator.Tests/EvaluatorConfigurationsTests.cs b/lang/cs/Org.Apache.REEF.Evaluator.Tests/EvaluatorConfigurationsTests.cs
index d90eacd..e3a530f 100644
--- a/lang/cs/Org.Apache.REEF.Evaluator.Tests/EvaluatorConfigurationsTests.cs
+++ b/lang/cs/Org.Apache.REEF.Evaluator.Tests/EvaluatorConfigurationsTests.cs
@@ -26,6 +26,8 @@ using Org.Apache.REEF.Examples.HelloREEF;
 using Org.Apache.REEF.Tang.Formats;
 using Org.Apache.REEF.Tang.Implementations.Tang;
 using Org.Apache.REEF.Tang.Interface;
+using Org.Apache.REEF.Tang.Types;
+using Org.Apache.REEF.Tang.Util;
 using Org.Apache.REEF.Utilities.Logging;
 using Org.Apache.REEF.Wake.Remote.Parameters;
 using Org.Apache.REEF.Wake.StreamingCodec;
@@ -74,7 +76,7 @@ namespace Org.Apache.REEF.Evaluator.Tests
             var avroConfiguration = serializer.AvroDeserializeFromFile("evaluator.conf");
 
             Assert.IsNotNull(avroConfiguration);
-            Assert.AreEqual(avroConfiguration.language, AvroConfigurationSerializer.Java);
+            Assert.AreEqual(avroConfiguration.language, Language.Java.ToString());
 
             foreach (var b in avroConfiguration.Bindings)
             {
@@ -88,7 +90,7 @@ namespace Org.Apache.REEF.Evaluator.Tests
             AvroConfigurationSerializer serializer = new AvroConfigurationSerializer();
             var avroConfiguration = serializer.AvroDeserializeFromFile("evaluator.conf");
             var language = avroConfiguration.language;
-            Assert.IsTrue(language.Equals(AvroConfigurationSerializer.Java));
+            Assert.IsTrue(language.ToString().Equals(Language.Java.ToString()));
 
             var classHierarchy = TangFactory.GetTang()
                 .GetClassHierarchy(new string[] { typeof(ApplicationIdentifier).Assembly.GetName().Name });

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/2e3e40f5/lang/cs/Org.Apache.REEF.Tang.Tests/ClassHierarchy/TestNamedParameter.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tang.Tests/ClassHierarchy/TestNamedParameter.cs b/lang/cs/Org.Apache.REEF.Tang.Tests/ClassHierarchy/TestNamedParameter.cs
index d555278..33f0a67 100644
--- a/lang/cs/Org.Apache.REEF.Tang.Tests/ClassHierarchy/TestNamedParameter.cs
+++ b/lang/cs/Org.Apache.REEF.Tang.Tests/ClassHierarchy/TestNamedParameter.cs
@@ -38,7 +38,7 @@ namespace Org.Apache.REEF.Tang.Tests.ClassHierarchy
             Assert.IsTrue(cls.GetDocumentation().Equals("NamedParameterWithDefaultValues"));
             Assert.IsTrue(cls.GetShortName().Equals("NamedParameterWithDefaultValues"));
             Assert.IsTrue(cls.GetAlias().Equals("org.apache.REEF.tang.tests.classHierarchy.NamedParameterWithDefaultValues"));
-            Assert.IsTrue(cls.GetAliasLanguage().Equals(AvroConfigurationSerializer.Java));
+            Assert.IsTrue(cls.GetAliasLanguage().ToString().Equals(Language.Java.ToString()));
         }
 
         [TestMethod]
@@ -47,7 +47,7 @@ namespace Org.Apache.REEF.Tang.Tests.ClassHierarchy
             var ns = TangFactory.GetTang().GetDefaultClassHierarchy();
             INamedParameterNode cls = (INamedParameterNode)ns.GetNode(typeof(NamedParameterWithAlias).AssemblyQualifiedName);
             Assert.IsTrue(cls.GetAlias().Equals("org.apache.REEF.tang.tests.classHierarchy.NamedParameterWithAlias"));
-            Assert.IsTrue(cls.GetAliasLanguage().Equals(AvroConfigurationSerializer.Java));
+            Assert.IsTrue(cls.GetAliasLanguage().ToString().Equals(Language.Java.ToString()));
         }
 
         [TestMethod]
@@ -60,7 +60,7 @@ namespace Org.Apache.REEF.Tang.Tests.ClassHierarchy
             var node2 = ns1.GetNode(typeof(NamedParameterWithAlias).AssemblyQualifiedName);
 
             Assert.IsTrue(node2 is INamedParameterNode);
-            Assert.IsTrue(((INamedParameterNode)node2).GetAliasLanguage().Equals(AvroConfigurationSerializer.Java));
+            Assert.IsTrue(((INamedParameterNode)node2).GetAliasLanguage().ToString().Equals(Language.Java.ToString()));
             Assert.IsTrue(((INamedParameterNode)node2).GetFullName().Equals(typeof(NamedParameterWithAlias).AssemblyQualifiedName));
             Assert.IsTrue(((INamedParameterNode)node2).GetAlias().Equals("org.apache.REEF.tang.tests.classHierarchy.NamedParameterWithAlias"));
         }
@@ -87,14 +87,14 @@ namespace Org.Apache.REEF.Tang.Tests.ClassHierarchy
         DefaultValues = null,
         DefaultClasses = null,
         Alias = "org.apache.REEF.tang.tests.classHierarchy.NamedParameterWithDefaultValues",
-        AliasLanguage = AvroConfigurationSerializer.Java
+        AliasLanguage = Language.Java
      )]
 
     public class NamedParameterWithDefaultValues : Name<string> 
     {
     }
 
-    [NamedParameter(alias: "org.apache.REEF.tang.tests.classHierarchy.NamedParameterWithAlias", aliasLanguage: AvroConfigurationSerializer.Java)]
+    [NamedParameter(alias: "org.apache.REEF.tang.tests.classHierarchy.NamedParameterWithAlias", aliasLanguage: Language.Java)]
     public class NamedParameterWithAlias : Name<string>
     {
     }

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/2e3e40f5/lang/cs/Org.Apache.REEF.Tang.Tests/Configuration/TestAvroConfiguration.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tang.Tests/Configuration/TestAvroConfiguration.cs b/lang/cs/Org.Apache.REEF.Tang.Tests/Configuration/TestAvroConfiguration.cs
index e682342..3dda5d0 100644
--- a/lang/cs/Org.Apache.REEF.Tang.Tests/Configuration/TestAvroConfiguration.cs
+++ b/lang/cs/Org.Apache.REEF.Tang.Tests/Configuration/TestAvroConfiguration.cs
@@ -25,6 +25,7 @@ using Org.Apache.REEF.Tang.Formats;
 using Org.Apache.REEF.Tang.Formats.AvroConfigurationDataContract;
 using Org.Apache.REEF.Tang.Implementations.Tang;
 using Org.Apache.REEF.Tang.Interface;
+using Org.Apache.REEF.Tang.Types;
 using Org.Apache.REEF.Tang.Util;
 
 namespace Org.Apache.REEF.Tang.Tests.Configuration
@@ -62,7 +63,7 @@ namespace Org.Apache.REEF.Tang.Tests.Configuration
             e2.value = "b1=b2";
             b.Add(e1);
             b.Add(e2);
-            var a = new AvroConfiguration(AvroConfigurationSerializer.Cs, b);
+            var a = new AvroConfiguration(Language.Cs.ToString(), b);
             return a;
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/2e3e40f5/lang/cs/Org.Apache.REEF.Tang/Annotations/NamedParameter.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tang/Annotations/NamedParameter.cs b/lang/cs/Org.Apache.REEF.Tang/Annotations/NamedParameter.cs
index 203bf24..86ccef8 100644
--- a/lang/cs/Org.Apache.REEF.Tang/Annotations/NamedParameter.cs
+++ b/lang/cs/Org.Apache.REEF.Tang/Annotations/NamedParameter.cs
@@ -19,6 +19,8 @@
 
 using System;
 using Org.Apache.REEF.Tang.Formats;
+using Org.Apache.REEF.Tang.Types;
+using Org.Apache.REEF.Tang.Util;
 
 namespace Org.Apache.REEF.Tang.Annotations
 {
@@ -34,10 +36,10 @@ namespace Org.Apache.REEF.Tang.Annotations
         public string[] DefaultValues { get; set; }
         public Type[] DefaultClasses { get; set; }
         public string Alias { get; set; }
-        public string AliasLanguage { get; set; }
+        public Language AliasLanguage { get; set; }
 
         public NamedParameterAttribute(string documentation = "", string shortName = "",
-            string defaultValue = ReefUninitializedValue, Type defaultClass = null, string[] defaultValues = null, Type[] defaultClasses = null, string alias = null, string aliasLanguage = AvroConfigurationSerializer.Java)
+            string defaultValue = ReefUninitializedValue, Type defaultClass = null, string[] defaultValues = null, Type[] defaultClasses = null, string alias = null, Language aliasLanguage = Language.Cs)
         {
             this.Documentation = documentation;
             this.ShortName = shortName;

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/2e3e40f5/lang/cs/Org.Apache.REEF.Tang/Formats/AvroConfigurationSerializer.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tang/Formats/AvroConfigurationSerializer.cs b/lang/cs/Org.Apache.REEF.Tang/Formats/AvroConfigurationSerializer.cs
index 985570f..fe1d7e6 100644
--- a/lang/cs/Org.Apache.REEF.Tang/Formats/AvroConfigurationSerializer.cs
+++ b/lang/cs/Org.Apache.REEF.Tang/Formats/AvroConfigurationSerializer.cs
@@ -34,6 +34,7 @@ using Org.Apache.REEF.Tang.Implementations.Configuration;
 using Org.Apache.REEF.Tang.Implementations.Tang;
 using Org.Apache.REEF.Tang.Interface;
 using Org.Apache.REEF.Tang.Types;
+using Org.Apache.REEF.Tang.Util;
 using Org.Apache.REEF.Utilities.Logging;
 
 namespace Org.Apache.REEF.Tang.Formats
@@ -53,9 +54,6 @@ namespace Org.Apache.REEF.Tang.Formats
 
     public class AvroConfigurationSerializer : IConfigurationSerializer
     {
-        public const string Java = "Java";
-        public const string Cs = "Cs";
-
         private static readonly Logger LOGGER = Logger.GetLogger(typeof(AvroConfigurationResolver));
 
         [Inject]
@@ -267,7 +265,7 @@ namespace Org.Apache.REEF.Tang.Formats
                 l.Add(new ConfigurationEntry(e.Key.GetFullName(), val));
             }
 
-            return new AvroConfiguration(Cs, l);
+            return new AvroConfiguration(Language.Cs.ToString(), l);
         }
         
         private byte[] AvroSerialize(AvroConfiguration obj)

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/2e3e40f5/lang/cs/Org.Apache.REEF.Tang/Implementations/ClassHierarchy/AvroClassHierarchy.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tang/Implementations/ClassHierarchy/AvroClassHierarchy.cs b/lang/cs/Org.Apache.REEF.Tang/Implementations/ClassHierarchy/AvroClassHierarchy.cs
index 0364115..134bdbe 100644
--- a/lang/cs/Org.Apache.REEF.Tang/Implementations/ClassHierarchy/AvroClassHierarchy.cs
+++ b/lang/cs/Org.Apache.REEF.Tang/Implementations/ClassHierarchy/AvroClassHierarchy.cs
@@ -201,11 +201,11 @@ namespace Org.Apache.REEF.Tang.Implementations.ClassHierarchy
             if (np.GetAlias() != null && !np.GetAlias().Equals(""))
             {
                 IDictionary<string, string> mapping = null;
-                _aliasLookupTable.TryGetValue(np.GetAliasLanguage(), out mapping);
+                _aliasLookupTable.TryGetValue(np.GetAliasLanguage().ToString(), out mapping);
                 if (mapping == null)
                 {
                     mapping = new Dictionary<string, string>();
-                    _aliasLookupTable.Add(np.GetAliasLanguage(), mapping);
+                    _aliasLookupTable.Add(np.GetAliasLanguage().ToString(), mapping);
                 }
 
                 try

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/2e3e40f5/lang/cs/Org.Apache.REEF.Tang/Implementations/ClassHierarchy/ClassHierarchyImpl.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tang/Implementations/ClassHierarchy/ClassHierarchyImpl.cs b/lang/cs/Org.Apache.REEF.Tang/Implementations/ClassHierarchy/ClassHierarchyImpl.cs
index afc25b2..ae2ac31 100644
--- a/lang/cs/Org.Apache.REEF.Tang/Implementations/ClassHierarchy/ClassHierarchyImpl.cs
+++ b/lang/cs/Org.Apache.REEF.Tang/Implementations/ClassHierarchy/ClassHierarchyImpl.cs
@@ -276,11 +276,11 @@ namespace Org.Apache.REEF.Tang.Implementations.ClassHierarchy
             if (!string.IsNullOrEmpty(np.GetAlias()))
             {
                 IDictionary<string, string> mapping = null;
-                _aliasLookupTable.TryGetValue(np.GetAliasLanguage(), out mapping);
+                _aliasLookupTable.TryGetValue(np.GetAliasLanguage().ToString(), out mapping);
                 if (null == mapping)
                 {
                     mapping= new Dictionary<string, string>();
-                    _aliasLookupTable.Add(np.GetAliasLanguage(), mapping);
+                    _aliasLookupTable.Add(np.GetAliasLanguage().ToString(), mapping);
                 }
                 try
                 {

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/2e3e40f5/lang/cs/Org.Apache.REEF.Tang/Implementations/ClassHierarchy/NamedParameterNodeImpl.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tang/Implementations/ClassHierarchy/NamedParameterNodeImpl.cs b/lang/cs/Org.Apache.REEF.Tang/Implementations/ClassHierarchy/NamedParameterNodeImpl.cs
index 76b10d2..fe42a44 100644
--- a/lang/cs/Org.Apache.REEF.Tang/Implementations/ClassHierarchy/NamedParameterNodeImpl.cs
+++ b/lang/cs/Org.Apache.REEF.Tang/Implementations/ClassHierarchy/NamedParameterNodeImpl.cs
@@ -20,6 +20,7 @@
 using System;
 using Org.Apache.REEF.Tang.Annotations;
 using Org.Apache.REEF.Tang.Types;
+using Org.Apache.REEF.Tang.Util;
 
 namespace Org.Apache.REEF.Tang.Implementations.ClassHierarchy
 {
@@ -33,11 +34,11 @@ namespace Org.Apache.REEF.Tang.Implementations.ClassHierarchy
         private readonly bool isSet;
         private readonly bool isList;
         private readonly string alias;
-        private readonly string aliasLanguage;
+        private readonly Language aliasLanguage;
 
         public NamedParameterNodeImpl(INode parent, String simpleName,
             String fullName, String fullArgName, String simpleArgName, bool isSet, bool isList,
-            String documentation, String shortName, String[] defaultInstanceAsStrings, string alias, string aliasLanguage)
+            String documentation, String shortName, String[] defaultInstanceAsStrings, string alias = null, Language aliasLanguage = Language.Cs)
             : base(parent, simpleName, fullName)
         {
             this.fullArgName = fullArgName;
@@ -51,13 +52,6 @@ namespace Org.Apache.REEF.Tang.Implementations.ClassHierarchy
             this.aliasLanguage = aliasLanguage;
         }
 
-        public NamedParameterNodeImpl(INode parent, String simpleName,
-            String fullName, String fullArgName, String simpleArgName, bool isSet, bool isList,
-            String documentation, String shortName, String[] defaultInstanceAsStrings)
-            : this(parent, simpleName, fullName, simpleArgName, simpleArgName, isSet, isList, documentation, shortName, defaultInstanceAsStrings, null, null)
-        {
-        }
-
         public override String ToString()
         {
             return GetSimpleArgName() + " " + GetName();
@@ -103,7 +97,7 @@ namespace Org.Apache.REEF.Tang.Implementations.ClassHierarchy
             return alias;
         }
 
-        public string GetAliasLanguage()
+        public Language GetAliasLanguage()
         {
             return aliasLanguage;
         }

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/2e3e40f5/lang/cs/Org.Apache.REEF.Tang/Org.Apache.REEF.Tang.csproj
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tang/Org.Apache.REEF.Tang.csproj b/lang/cs/Org.Apache.REEF.Tang/Org.Apache.REEF.Tang.csproj
index ff3efa7..51cf18f 100644
--- a/lang/cs/Org.Apache.REEF.Tang/Org.Apache.REEF.Tang.csproj
+++ b/lang/cs/Org.Apache.REEF.Tang/Org.Apache.REEF.Tang.csproj
@@ -131,6 +131,7 @@ under the License.
     <Compile Include="Util\AbstractMonotonicMultiMap.cs" />
     <Compile Include="Util\AssemblyLoader.cs" />
     <Compile Include="Util\GenericType.cs" />
+    <Compile Include="Util\Language.cs" />
     <Compile Include="Util\MonotonicHashMap.cs" />
     <Compile Include="Util\MonotonicHashSet.cs" />
     <Compile Include="Util\MonotonicMultiHashMap.cs" />

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/2e3e40f5/lang/cs/Org.Apache.REEF.Tang/Protobuf/ProtocolBufferClassHierarchy.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tang/Protobuf/ProtocolBufferClassHierarchy.cs b/lang/cs/Org.Apache.REEF.Tang/Protobuf/ProtocolBufferClassHierarchy.cs
index 2c688f5..7bd5fc1 100644
--- a/lang/cs/Org.Apache.REEF.Tang/Protobuf/ProtocolBufferClassHierarchy.cs
+++ b/lang/cs/Org.Apache.REEF.Tang/Protobuf/ProtocolBufferClassHierarchy.cs
@@ -26,6 +26,7 @@ using Org.Apache.REEF.Tang.Exceptions;
 using Org.Apache.REEF.Tang.Implementations.ClassHierarchy;
 using Org.Apache.REEF.Tang.Interface;
 using Org.Apache.REEF.Tang.Types;
+using Org.Apache.REEF.Tang.Util;
 using Org.Apache.REEF.Utilities.Logging;
 using ProtoBuf;
 
@@ -188,7 +189,7 @@ namespace Org.Apache.REEF.Tang.Protobuf
             string shortName, // can be null
             string[] instanceDefault, // can be null
             IList<Org.Apache.REEF.Tang.Protobuf.Node> children,
-            string alias, string aliasLanguage)
+            string alias, Language aliasLanguage)
         {
             Org.Apache.REEF.Tang.Protobuf.NamedParameterNode namedParameterNode = new Org.Apache.REEF.Tang.Protobuf.NamedParameterNode();
             namedParameterNode.simple_arg_class_name = simpleArgClassName;
@@ -211,10 +212,7 @@ namespace Org.Apache.REEF.Tang.Protobuf
                 namedParameterNode.alias_name = alias;
             }
 
-            if (aliasLanguage != null)
-            {
-                namedParameterNode.alias_language = aliasLanguage;
-            }
+            namedParameterNode.alias_language = aliasLanguage.ToString();
 
             foreach (var id in instanceDefault)
             {
@@ -304,14 +302,14 @@ namespace Org.Apache.REEF.Tang.Protobuf
 
         private void AddAlias(INamedParameterNode np)
         {
-            if (np.GetAlias() != null && !np.GetAlias().Equals(""))
+            if (!string.IsNullOrEmpty(np.GetAlias()))
             {
                 IDictionary<string, string> mapping = null;
-                _aliasLookupTable.TryGetValue(np.GetAliasLanguage(), out mapping);
+                _aliasLookupTable.TryGetValue(np.GetAliasLanguage().ToString(), out mapping);
                 if (mapping == null)
                 {
                     mapping = new Dictionary<string, string>();
-                    _aliasLookupTable.Add(np.GetAliasLanguage(), mapping);
+                    _aliasLookupTable.Add(np.GetAliasLanguage().ToString(), mapping);
                 }
                 try
                 {
@@ -336,12 +334,23 @@ namespace Org.Apache.REEF.Tang.Protobuf
             {
                 Org.Apache.REEF.Tang.Protobuf.NamedParameterNode np = n.named_parameter_node;
 
-                if (np.alias_name != null && np.alias_language != null)
+                if (!string.IsNullOrWhiteSpace(np.alias_name) && !string.IsNullOrWhiteSpace(np.alias_language))
                 {
+                    Language language;
+                    try
+                    {                        
+                        Enum.TryParse(np.alias_language, true, out language);
+                    }
+                    catch (Exception)
+                    {
+                        string msg = string.Format(CultureInfo.CurrentCulture, "Language {0} passed in is not supported", np.alias_language);
+                        throw new ArgumentException(msg);
+                    }
+
                     parsed = new NamedParameterNodeImpl(parent, n.name,
                         n.full_name, np.full_arg_class_name, np.simple_arg_class_name,
                         np.is_set, np.is_list, np.documentation, np.short_name,
-                        np.instance_default.ToArray(), np.alias_name, np.alias_language);
+                        np.instance_default.ToArray(), np.alias_name, language);
                 }
                 else
                 {

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/2e3e40f5/lang/cs/Org.Apache.REEF.Tang/Types/INamedParameterNode.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tang/Types/INamedParameterNode.cs b/lang/cs/Org.Apache.REEF.Tang/Types/INamedParameterNode.cs
index 442fd6c..5e603f9 100644
--- a/lang/cs/Org.Apache.REEF.Tang/Types/INamedParameterNode.cs
+++ b/lang/cs/Org.Apache.REEF.Tang/Types/INamedParameterNode.cs
@@ -18,6 +18,7 @@
  */
 
 using Org.Apache.REEF.Tang.Annotations;
+using Org.Apache.REEF.Tang.Util;
 
 namespace Org.Apache.REEF.Tang.Types
 {
@@ -46,9 +47,8 @@ namespace Org.Apache.REEF.Tang.Types
 
         /// <summary>
         /// It returns the programming language for the alias
-        /// Examples are "Java", "Cs"
         /// </summary>
         /// <returns></returns>
-        string GetAliasLanguage();
+        Language GetAliasLanguage();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/2e3e40f5/lang/cs/Org.Apache.REEF.Tang/Util/Language.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Tang/Util/Language.cs b/lang/cs/Org.Apache.REEF.Tang/Util/Language.cs
new file mode 100644
index 0000000..7fa64a5
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Tang/Util/Language.cs
@@ -0,0 +1,32 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+namespace Org.Apache.REEF.Tang.Util
+{
+    /// <summary>
+    /// This is to define the programming language used in AvroConfiguration.
+    /// In Deserialization of a configuration, if a class name in the configuration cannot be found 
+    /// in class hiearchy, the language in the configuration is used to find the alias of that class name
+    /// </summary>
+    public enum Language
+    {
+        Java,
+        Cs
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/2e3e40f5/lang/cs/Org.Apache.REEF.Wake/Remote/Impl/RemoteEvent.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Wake/Remote/Impl/RemoteEvent.cs b/lang/cs/Org.Apache.REEF.Wake/Remote/Impl/RemoteEvent.cs
index f5a66cf..5fa76ca 100644
--- a/lang/cs/Org.Apache.REEF.Wake/Remote/Impl/RemoteEvent.cs
+++ b/lang/cs/Org.Apache.REEF.Wake/Remote/Impl/RemoteEvent.cs
@@ -51,7 +51,7 @@ namespace Org.Apache.REEF.Wake.Remote.Impl
 
         public T Value { get; set; }
 
-        [Obsolete("This field is used in Java code only; keeping it for consistency across languages. See [REEF-445]", false)]
+        [Obsolete("This field is used in Java code only; keeping it for consistency across Language. See [REEF-445]", false)]
         public long Sequence { get; set; }
     }
 }