http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/SuspendedTaskClr2Java.cpp
----------------------------------------------------------------------
diff --git 
a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/SuspendedTaskClr2Java.cpp
 
b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/SuspendedTaskClr2Java.cpp
deleted file mode 100644
index e052d24..0000000
--- 
a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/SuspendedTaskClr2Java.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- * 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.
- */
-#include "Clr2JavaImpl.h"
-
-namespace Org {
-  namespace Apache {
-         namespace REEF {
-                 namespace Driver {
-                         namespace Bridge {
-                                 namespace Clr2java {
-                                         ref class ManagedLog {
-                                         internal:
-                                                 static BridgeLogger^ LOGGER = 
BridgeLogger::GetLogger("<C++>");
-                                         };
-
-                                         
SuspendedTaskClr2Java::SuspendedTaskClr2Java(JNIEnv *env, jobject 
jobjectSuspendedTask) {
-                                                 
ManagedLog::LOGGER->LogStart("SuspendedTaskClr2Java::SuspendedTaskClr2Java");
-                                                 pin_ptr<JavaVM*> pJavaVm = 
&_jvm;
-                                                 if (env->GetJavaVM(pJavaVm) 
!= 0) {
-                                                         
ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
-                                                 }
-                                                 _jobjectSuspendedTask = 
reinterpret_cast<jobject>(env->NewGlobalRef(jobjectSuspendedTask));
-
-                                                 jclass jclassSuspendedTask = 
env->GetObjectClass(_jobjectSuspendedTask);
-                                                 jfieldID jidTaskId = 
env->GetFieldID(jclassSuspendedTask, "taskId", "Ljava/lang/String;");
-                                                 _jstringId = 
reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectSuspendedTask,
 jidTaskId)));
-                                                 
ManagedLog::LOGGER->LogStop("SuspendedTaskClr2Java::SuspendedTaskClr2Java");
-                                         }
-
-                                         IActiveContextClr2Java^ 
SuspendedTaskClr2Java::GetActiveContext() {
-                                                 
ManagedLog::LOGGER->LogStart("SuspendedTaskClr2Java::GetActiveContext");
-                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
-
-                                                 jclass jclassSuspendedTask = 
env->GetObjectClass(_jobjectSuspendedTask);
-                                                 jfieldID jidActiveContext = 
env->GetFieldID(jclassSuspendedTask, "jactiveContext", 
"Lorg/apache/reef/javabridge/ActiveContextBridge;");
-                                                 jobject jobjectActiveContext 
= env->GetObjectField(_jobjectSuspendedTask, jidActiveContext);
-                                                 
ManagedLog::LOGGER->LogStop("SuspendedTaskClr2Java::GetActiveContext");
-                                                 return gcnew 
ActiveContextClr2Java(env, jobjectActiveContext);
-                                         }
-
-                                         String^ 
SuspendedTaskClr2Java::GetId() {
-                                                 
ManagedLog::LOGGER->Log("SuspendedTaskClr2Java::GetId");
-                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
-                                                 return 
ManagedStringFromJavaString(env, _jstringId);
-                                         }
-
-                                         array<byte>^ 
SuspendedTaskClr2Java::Get() {
-                                                 
ManagedLog::LOGGER->Log("SuspendedTaskClr2Java::Get");
-                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
-                                                 jclass jclassSuspendedTask = 
env->GetObjectClass(_jobjectSuspendedTask);
-                                                 jmethodID jmidGet = 
env->GetMethodID(jclassSuspendedTask, "get", "()[B");
-
-                                                 if (jmidGet == NULL) {
-                                                         
ManagedLog::LOGGER->Log("jmidGet is NULL");
-                                                         return nullptr;
-                                                 }
-                                                 jbyteArray jMessage = 
(jbyteArray)env->CallObjectMethod(_jobjectSuspendedTask, jmidGet);
-                                                 return 
ManagedByteArrayFromJavaByteArray(env, jMessage);
-                                         }
-
-                                         void 
SuspendedTaskClr2Java::OnError(String^ message) {
-                                                 
ManagedLog::LOGGER->Log("SuspendedTaskClr2Java::OnError");
-                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
-                                                 HandleClr2JavaError(env, 
message, _jobjectSuspendedTask);
-                                         }
-                                 }
-                         }
-                 }
-         }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/TaskMessageClr2Java.cpp
----------------------------------------------------------------------
diff --git 
a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/TaskMessageClr2Java.cpp
 
b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/TaskMessageClr2Java.cpp
deleted file mode 100644
index 1ee79e9..0000000
--- 
a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/TaskMessageClr2Java.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * 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.
- */
-#include "Clr2JavaImpl.h"
-
-namespace Org {
-  namespace Apache {
-         namespace REEF {
-                 namespace Driver {
-                         namespace Bridge {
-                                 namespace Clr2java {
-                                         ref class ManagedLog {
-                                         internal:
-                                                 static BridgeLogger^ LOGGER = 
BridgeLogger::GetLogger("<C++>");
-                                         };
-
-                                         
TaskMessageClr2Java::TaskMessageClr2Java(JNIEnv *env, jobject jtaskMessage) {
-                                                 
ManagedLog::LOGGER->LogStart("TaskMessageClr2Java::TaskMessageClr2Java");
-                                                 pin_ptr<JavaVM*> pJavaVm = 
&_jvm;
-                                                 if (env->GetJavaVM(pJavaVm) 
!= 0) {
-                                                         
ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
-                                                 }
-                                                 _jobjectTaskMessage = 
reinterpret_cast<jobject>(env->NewGlobalRef(jtaskMessage));
-
-                                                 jclass jclassTaskMessage = 
env->GetObjectClass(_jobjectTaskMessage);
-                                                 jfieldID jidTaskId = 
env->GetFieldID(jclassTaskMessage, "taskId", "Ljava/lang/String;");
-                                                 _jstringId = 
reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectTaskMessage,
 jidTaskId)));
-                                                 
ManagedLog::LOGGER->LogStop("TaskMessageClr2Java::TaskMessageClr2Java");
-                                         }
-
-                                         void 
TaskMessageClr2Java::OnError(String^ message) {
-                                                 
ManagedLog::LOGGER->Log("TaskMessageClr2Java::OnError");
-                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
-                                                 HandleClr2JavaError(env, 
message, _jobjectTaskMessage);
-                                         }
-
-                                         String^ TaskMessageClr2Java::GetId() {
-                                                 
ManagedLog::LOGGER->Log("TaskMessageClr2Java::GetId");
-                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
-                                                 return 
ManagedStringFromJavaString(env, _jstringId);
-                                         }
-                                 }
-                         }
-                 }
-         }
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/.gitignore
----------------------------------------------------------------------
diff --git a/lang/cs/.gitignore b/lang/cs/.gitignore
index cea2523..8db483c 100644
--- a/lang/cs/.gitignore
+++ b/lang/cs/.gitignore
@@ -6,6 +6,9 @@ TestResults
 **/*.suo
 **/*.csproj.user
 **/obj
+**/x64
+**/*.opensdf
+**/*.sdf
 **/.nuget/nuspec
 **/.nuget/packages
 *.sln.GhostDoc.xml

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/.nuget/finalizeNuspec.ps1
----------------------------------------------------------------------
diff --git a/lang/cs/.nuget/finalizeNuspec.ps1 
b/lang/cs/.nuget/finalizeNuspec.ps1
index 69683d8..825072e 100644
--- a/lang/cs/.nuget/finalizeNuspec.ps1
+++ b/lang/cs/.nuget/finalizeNuspec.ps1
@@ -77,6 +77,7 @@ Function Finalize-Nuspec-Version {
     }
 
     $nuspecDir = "$SolutionDir\.nuget\nuspec"
+    Write-Output $nuspecDir
     $nuspecFiles = Get-ChildItem $nuspecDir
     
     # Replace the $version$ token with the specified version in each nuspec 
file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge.JAR/Org.Apache.REEF.Bridge.JAR.csproj
----------------------------------------------------------------------
diff --git 
a/lang/cs/Org.Apache.REEF.Bridge.JAR/Org.Apache.REEF.Bridge.JAR.csproj 
b/lang/cs/Org.Apache.REEF.Bridge.JAR/Org.Apache.REEF.Bridge.JAR.csproj
index 4623ddc..a728d18 100644
--- a/lang/cs/Org.Apache.REEF.Bridge.JAR/Org.Apache.REEF.Bridge.JAR.csproj
+++ b/lang/cs/Org.Apache.REEF.Bridge.JAR/Org.Apache.REEF.Bridge.JAR.csproj
@@ -24,17 +24,34 @@ under the License.
     <RootNameSpace>$(MSBuildProjectName)</RootNameSpace>
   </PropertyGroup>
   <Import Project="..\build.props" />
+  <Import Project="$(MSBuildBinPath)\Microsoft.Common.targets" />
   <!--
     Check that maven is installed
   -->
   <Target Name="CheckMavenInstall">
     <Error Condition=" '$(M2_HOME)' == '' " Text="$M2_HOME is not set. Please 
make sure that Maven is installed and configured. See 
https://cwiki.apache.org/confluence/display/REEF/Compiling+REEF for details." />
+       <Error Condition=" '$(JAVA_HOME)' == '' " Text="$JAVA_HOME is not set. 
Please make sure that Java is installed and configured. See 
https://cwiki.apache.org/confluence/display/REEF/Compiling+REEF for details." />
     <Message Text="Using the maven installation found in $(M2_HOME)" />
   </Target>
+  
+  <Target Name="CheckJavaInstall">    
+       <Error Condition=" '$(JAVA_HOME)' == '' " Text="$JAVA_HOME is not set. 
Please make sure that Java is installed and configured. See 
https://cwiki.apache.org/confluence/display/REEF/Compiling+REEF for details." />
+    <Message Text="Using the java installation found in $(JAVA_HOME)" />
+  </Target>
+
+  <Target Name="CheckProtocInstall">        
+       <Exec ContinueOnError="True" IgnoreExitCode='true'
+               Command='"cmd /c where protoc.exe"'>
+       <Output TaskParameter="ExitCode" PropertyName="ErrorCode"/>
+    </Exec>   
+   <Message Text="The exit code is $(ErrorCode)"/>
+   <Error Text="protoc.exe not found. Please make sure that protoc.exe is on 
the path. See https://cwiki.apache.org/confluence/display/REEF/Compiling+REEF 
for details." Condition="'$(ErrorCode)' > '0'" />
+  </Target>  
+
   <!--
     Executes 'mvn install', if the JAR does not exist.
   -->
-  <Target Name="Build" DependsOnTargets="CheckMavenInstall">
+  <Target Name="Build" 
DependsOnTargets="CheckMavenInstall;CheckJavaInstall;CheckProtocInstall">
     <PropertyGroup>
       <!--The shaded jar of the bridge -->
       
<Bridge_JAR_Name>reef-bridge-java-$(REEF_Version)-shaded.jar</Bridge_JAR_Name>
@@ -46,12 +63,12 @@ under the License.
   <!--
     Executes 'mvn clean', if the JAR exists.
   -->
-  <Target Name="Clean" DependsOnTargets="CheckMavenInstall">
+  <Target Name="Clean" 
DependsOnTargets="CheckMavenInstall;CheckJavaInstall;CheckProtocInstall">
     <PropertyGroup>
       <!--The shaded jar of the bridge -->
       
<Bridge_JAR_Name>reef-bridge-java-$(REEF_Version)-shaded.jar</Bridge_JAR_Name>
       
<Bridge_JAR>$(REEF_Source_Folder)\lang\java\reef-bridge-java\target\$(Bridge_JAR_Name)</Bridge_JAR>
-    </PropertyGroup>
+    </PropertyGroup>   
     <Exec Command="$(M2_HOME)\bin\mvn -TC1 -DskipTests clean" 
Condition="Exists('$(Bridge_JAR)')" WorkingDirectory="$(REEF_Source_Folder)" />
     <Delete Files="$(OutputPath)\$(Bridge_JAR_Name)" />
   </Target>
@@ -59,4 +76,8 @@ under the License.
     Standard Rebuild target: Clean, then build
   -->
   <Target Name="Rebuild" DependsOnTargets="Clean;Build"/>
+ <Target Name="GetNativeManifest"> 
+ </Target>
+ <Target Name="GetCopyToOutputDirectoryItems"> 
+</Target> 
 </Project>

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/ActiveContextClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/ActiveContextClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/ActiveContextClr2Java.cpp
new file mode 100644
index 0000000..6e56806
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/ActiveContextClr2Java.cpp
@@ -0,0 +1,110 @@
+/**
+ * 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.
+ */
+#include "Clr2JavaImpl.h"
+
+namespace Org {
+       namespace Apache {
+               namespace REEF {
+                       namespace Driver {
+                               namespace Bridge {
+                                       namespace Clr2java {
+                                               private ref class ManagedLog {
+                                               internal:
+                                                       static BridgeLogger^ 
LOGGER = BridgeLogger::GetLogger("<C++>");
+                                               };
+
+                                               
ActiveContextClr2Java::ActiveContextClr2Java(JNIEnv *env, jobject 
jobjectActiveContext) {
+                                                       
ManagedLog::LOGGER->LogStart("ActiveContextClr2Java::ActiveContextClr2Java");
+                                                       pin_ptr<JavaVM*> 
pJavaVm = &_jvm;
+                                                       if 
(env->GetJavaVM(pJavaVm) != 0) {
+                                                               
ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+                                                       }
+
+                                                       _jobjectActiveContext = 
reinterpret_cast<jobject>(env->NewGlobalRef(jobjectActiveContext));
+
+                                                       jclass 
jclassActiveContext = env->GetObjectClass(_jobjectActiveContext);
+
+                                                       jfieldID jidContextId = 
env->GetFieldID(jclassActiveContext, "contextId", "Ljava/lang/String;");
+                                                       _jstringId = 
reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectActiveContext,
 jidContextId)));
+
+                                                       jfieldID jidEvaluatorId 
= env->GetFieldID(jclassActiveContext, "evaluatorId", "Ljava/lang/String;");
+                                                       _jstringEvaluatorId = 
(jstring)env->GetObjectField(_jobjectActiveContext, jidEvaluatorId);
+                                                       _jstringEvaluatorId = 
reinterpret_cast<jstring>(env->NewGlobalRef(_jstringEvaluatorId));
+
+                                                       
ManagedLog::LOGGER->LogStop("ActiveContextClr2Java::ActiveContextClr2Java");
+                                               }
+
+                                               void 
ActiveContextClr2Java::SubmitTask(String^ taskConfigStr) {
+                                                       
ManagedLog::LOGGER->LogStart("ActiveContextClr2Java::SubmitTask");
+                                                       JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                       jclass 
jclassActiveContext = env->GetObjectClass(_jobjectActiveContext);
+                                                       jmethodID 
jmidSubmitTask = env->GetMethodID(jclassActiveContext, "submitTaskString", 
"(Ljava/lang/String;)V");
+
+                                                       if (jmidSubmitTask == 
NULL) {
+                                                               
ManagedLog::LOGGER->Log("jmidSubmitTask is NULL");
+                                                               return;
+                                                       }
+                                                       env->CallObjectMethod(
+                                                               
_jobjectActiveContext,
+                                                               jmidSubmitTask,
+                                                               
JavaStringFromManagedString(env, taskConfigStr));
+                                                       
ManagedLog::LOGGER->LogStop("ActiveContextClr2Java::SubmitTask");
+                                               }
+
+                                               void 
ActiveContextClr2Java::OnError(String^ message) {
+                                                       JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                       
HandleClr2JavaError(env, message, _jobjectActiveContext);
+                                               }
+
+                                               void 
ActiveContextClr2Java::Close() {
+                                                       
ManagedLog::LOGGER->LogStart("ActiveContextClr2Java::Close");
+                                                       JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                       jclass 
jclassActiveContext = env->GetObjectClass(_jobjectActiveContext);
+                                                       jmethodID jmidClose = 
env->GetMethodID(jclassActiveContext, "close", "()V");
+
+                                                       if (jmidClose == NULL) {
+                                                               
ManagedLog::LOGGER->Log("jmidClose is NULL");
+                                                               return;
+                                                       }
+                                                       env->CallObjectMethod(
+                                                               
_jobjectActiveContext,
+                                                               jmidClose);
+                                                       
ManagedLog::LOGGER->LogStop("ActiveContextClr2Java::Close");
+                                               }
+
+                                               String^ 
ActiveContextClr2Java::GetId() {
+                                                       JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                       return 
ManagedStringFromJavaString(env, _jstringId);
+                                               }
+
+                                               String^ 
ActiveContextClr2Java::GetEvaluatorId() {
+                                                       JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                       return 
ManagedStringFromJavaString(env, _jstringEvaluatorId);
+                                               }
+
+                                               IEvaluatorDescriptor^ 
ActiveContextClr2Java::GetEvaluatorDescriptor() {
+                                                       
ManagedLog::LOGGER->LogStart("ActiveContextClr2Java::GetEvaluatorDescriptor");
+                                                       return 
CommonUtilities::RetrieveEvaluatorDescriptor(_jobjectActiveContext, _jvm);
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/AllocatedEvaluatorClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/AllocatedEvaluatorClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/AllocatedEvaluatorClr2Java.cpp
new file mode 100644
index 0000000..4dabd96
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/AllocatedEvaluatorClr2Java.cpp
@@ -0,0 +1,168 @@
+/**
+ * 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.
+ */
+#include "Clr2JavaImpl.h"
+
+using namespace JavaClrBridge;
+
+namespace Org {
+  namespace Apache {
+         namespace REEF {
+                 namespace Driver {
+                         namespace Bridge {
+                                 namespace Clr2java {
+                                         ref class ManagedLog {
+                                         internal:
+                                                 static BridgeLogger^ LOGGER = 
BridgeLogger::GetLogger("<C++>");
+                                         };
+
+                                         
AllocatedEvaluatorClr2Java::AllocatedEvaluatorClr2Java(JNIEnv *env, jobject 
jallocatedEvaluator) {
+
+                                                 
ManagedLog::LOGGER->LogStart("AllocatedEvaluatorClr2Java::AllocatedEvaluatorClr2Java");
+
+                                                 pin_ptr<JavaVM*> pJavaVm = 
&_jvm;
+                                                 if (env->GetJavaVM(pJavaVm) 
!= 0) {
+                                                         
ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+                                                 }
+                                                 _jobjectAllocatedEvaluator = 
reinterpret_cast<jobject>(env->NewGlobalRef(jallocatedEvaluator));
+
+                                                 jclass 
jclassAllocatedEvaluator = env->GetObjectClass(_jobjectAllocatedEvaluator);
+                                                 jfieldID jidEvaluatorId = 
env->GetFieldID(jclassAllocatedEvaluator, "evaluatorId", "Ljava/lang/String;");
+                                                 _jstringId = 
reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectAllocatedEvaluator,
 jidEvaluatorId)));
+
+                                                 jfieldID jidNameServerInfo = 
env->GetFieldID(jclassAllocatedEvaluator, "nameServerInfo", 
"Ljava/lang/String;");
+                                                 _jstringNameServerInfo = 
reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectAllocatedEvaluator,
 jidNameServerInfo)));
+
+                                                 
ManagedLog::LOGGER->LogStop("AllocatedEvaluatorClr2Java::AllocatedEvaluatorClr2Java");
+                                         }
+
+                                         void 
AllocatedEvaluatorClr2Java::SubmitContext(String^ contextConfigStr) {
+                                                 
ManagedLog::LOGGER->LogStart("AllocatedEvaluatorClr2Java::SubmitContext");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 jclass 
jclassAllocatedEvaluator = env->GetObjectClass(_jobjectAllocatedEvaluator);
+                                                 jmethodID jmidSubmitContext = 
env->GetMethodID(jclassAllocatedEvaluator, "submitContextString", 
"(Ljava/lang/String;)V");
+
+                                                 if (jmidSubmitContext == 
NULL) {
+                                                         
ManagedLog::LOGGER->Log("jmidSubmitContext is NULL");
+                                                         return;
+                                                 }
+                                                 env->CallObjectMethod(
+                                                         
_jobjectAllocatedEvaluator,
+                                                         jmidSubmitContext,
+                                                         
JavaStringFromManagedString(env, contextConfigStr));
+                                                 
ManagedLog::LOGGER->LogStop("AllocatedEvaluatorClr2Java::SubmitContext");
+                                         }
+
+                                         void 
AllocatedEvaluatorClr2Java::SubmitContextAndTask(String^ contextConfigStr, 
String^ taskConfigStr) {
+                                                 
ManagedLog::LOGGER->LogStart("AllocatedEvaluatorClr2Java::SubmitContextAndTask");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 jclass 
jclassAllocatedEvaluator = env->GetObjectClass(_jobjectAllocatedEvaluator);
+                                                 jmethodID 
jmidSubmitContextAndTask = env->GetMethodID(jclassAllocatedEvaluator, 
"submitContextAndTaskString", "(Ljava/lang/String;Ljava/lang/String;)V");
+
+                                                 if (jmidSubmitContextAndTask 
== NULL) {
+                                                         
ManagedLog::LOGGER->Log("jmidSubmitContextAndTask is NULL");
+                                                         return;
+                                                 }
+                                                 env->CallObjectMethod(
+                                                         
_jobjectAllocatedEvaluator,
+                                                         
jmidSubmitContextAndTask,
+                                                         
JavaStringFromManagedString(env, contextConfigStr),
+                                                         
JavaStringFromManagedString(env, taskConfigStr));
+                                                 
ManagedLog::LOGGER->LogStop("AllocatedEvaluatorClr2Java::SubmitContextAndTask");
+                                         }
+
+                                         void 
AllocatedEvaluatorClr2Java::SubmitContextAndService(String^ contextConfigStr, 
String^ serviceConfigStr) {
+                                                 
ManagedLog::LOGGER->LogStart("AllocatedEvaluatorClr2Java::SubmitContextAndService");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 jclass 
jclassAllocatedEvaluator = env->GetObjectClass(_jobjectAllocatedEvaluator);
+                                                 jmethodID 
jmidSubmitContextAndService = env->GetMethodID(jclassAllocatedEvaluator, 
"submitContextAndServiceString", "(Ljava/lang/String;Ljava/lang/String;)V");
+
+                                                 if 
(jmidSubmitContextAndService == NULL) {
+                                                         
ManagedLog::LOGGER->Log("jmidSubmitContextAndService is NULL");
+                                                         return;
+                                                 }
+                                                 env->CallObjectMethod(
+                                                         
_jobjectAllocatedEvaluator,
+                                                         
jmidSubmitContextAndService,
+                                                         
JavaStringFromManagedString(env, contextConfigStr),
+                                                         
JavaStringFromManagedString(env, serviceConfigStr));
+                                                 
ManagedLog::LOGGER->LogStop("AllocatedEvaluatorClr2Java::SubmitContextAndService");
+                                         }
+
+                                         void 
AllocatedEvaluatorClr2Java::SubmitContextAndServiceAndTask(String^ 
contextConfigStr, String^ serviceConfigStr, String^ taskConfigStr) {
+                                                 
ManagedLog::LOGGER->LogStart("AllocatedEvaluatorClr2Java::SubmitContextAndServiceAndTask");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 jclass 
jclassAllocatedEvaluator = env->GetObjectClass(_jobjectAllocatedEvaluator);
+                                                 jmethodID 
jmidSubmitContextAndServiceAndTask = env->GetMethodID(jclassAllocatedEvaluator, 
"submitContextAndServiceAndTaskString", 
"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
+
+                                                 if 
(jmidSubmitContextAndServiceAndTask == NULL) {
+                                                         
ManagedLog::LOGGER->Log("jmidSubmitContextAndServiceAndTask is NULL");
+                                                         return;
+                                                 }
+                                                 env->CallObjectMethod(
+                                                         
_jobjectAllocatedEvaluator,
+                                                         
jmidSubmitContextAndServiceAndTask,
+                                                         
JavaStringFromManagedString(env, contextConfigStr),
+                                                         
JavaStringFromManagedString(env, serviceConfigStr),
+                                                         
JavaStringFromManagedString(env, taskConfigStr));
+                                                 
ManagedLog::LOGGER->LogStop("AllocatedEvaluatorClr2Java::SubmitContextAndServiceAndTask");
+                                         }
+
+                                         void 
AllocatedEvaluatorClr2Java::OnError(String^ message) {
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 HandleClr2JavaError(env, 
message, _jobjectAllocatedEvaluator);
+                                         }
+
+                                         void 
AllocatedEvaluatorClr2Java::Close() {
+                                                 
ManagedLog::LOGGER->LogStart("AllocatedEvaluatorClr2Java::Close");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 jclass 
jclassAllocatedEvaluator = env->GetObjectClass(_jobjectAllocatedEvaluator);
+                                                 jmethodID jmidClose = 
env->GetMethodID(jclassAllocatedEvaluator, "close", "()V");
+
+                                                 if (jmidClose == NULL) {
+                                                         
ManagedLog::LOGGER->Log("jmidClose is NULL");
+                                                         return;
+                                                 }
+                                                 env->CallObjectMethod(
+                                                         
_jobjectAllocatedEvaluator,
+                                                         jmidClose);
+                                                 
ManagedLog::LOGGER->LogStop("AllocatedEvaluatorClr2Java::Close");
+                                         }
+
+                                         String^ 
AllocatedEvaluatorClr2Java::GetId() {
+                                                 
ManagedLog::LOGGER->Log("AllocatedEvaluatorClr2Java::GetId");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 return 
ManagedStringFromJavaString(env, _jstringId);
+                                         }
+
+                                         String^ 
AllocatedEvaluatorClr2Java::GetNameServerInfo() {
+                                                 
ManagedLog::LOGGER->Log("AllocatedEvaluatorClr2Java::GetNameServerInfo");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 return 
ManagedStringFromJavaString(env, _jstringNameServerInfo);
+                                         }
+
+                                         IEvaluatorDescriptor^ 
AllocatedEvaluatorClr2Java::GetEvaluatorDescriptor() {
+                                                 
ManagedLog::LOGGER->LogStart("AllocatedEvaluatorClr2Java::GetEvaluatorDescriptor");
+                                                 return 
CommonUtilities::RetrieveEvaluatorDescriptor(_jobjectAllocatedEvaluator, _jvm);
+                                         }
+                                 }
+                         }
+                 }
+         }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/AssemblyInfo.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/AssemblyInfo.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/AssemblyInfo.cpp
new file mode 100644
index 0000000..d91c459
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/AssemblyInfo.cpp
@@ -0,0 +1,57 @@
+/**
+ * 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.
+ */
+
+#include "stdafx.h"
+
+using namespace System;
+using namespace System::Reflection;
+using namespace System::Runtime::CompilerServices;
+using namespace System::Runtime::InteropServices;
+using namespace System::Security::Permissions;
+
+//
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+//
+[assembly:AssemblyTitleAttribute(L"OrgApacheREEFJavaClrBridge")];
+[assembly:AssemblyDescriptionAttribute(L"")];
+[assembly:AssemblyConfigurationAttribute(L"")];
+[assembly:AssemblyCompanyAttribute(L"")];
+[assembly:AssemblyProductAttribute(L"OrgApacheREEFJavaClrBridge")];
+[assembly:AssemblyCopyrightAttribute(L"Copyright (c)  2015")];
+[assembly:AssemblyTrademarkAttribute(L"")];
+[assembly:AssemblyCultureAttribute(L"")];
+
+//
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version
+//      Build Number
+//      Revision
+//
+// You can specify all the value or you can default the Revision and Build 
Numbers
+// by using the '*' as shown below:
+
+[assembly:AssemblyVersionAttribute("1.0.*")];
+
+[assembly:ComVisible(false)];
+
+[assembly:CLSCompliantAttribute(true)];
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/AssemblyUtil.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/AssemblyUtil.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/AssemblyUtil.cpp
new file mode 100644
index 0000000..ce9239c
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/AssemblyUtil.cpp
@@ -0,0 +1,53 @@
+/**
+ * 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.
+ */
+#include "InteropAssemblies.h"
+
+
+void AssemblyUtil::Add(Assembly^  myasm) {
+  if (0 == _asmCount) {
+    //asm1 = myasm;
+    AppDomain^ currentDomain = AppDomain::CurrentDomain;
+    currentDomain->AssemblyResolve += gcnew 
ResolveEventHandler(&MyResolveEventHandler);
+  }
+  String^ asmName = myasm->FullName->ToLower();
+  Assembly^ existingAsm = nullptr;
+  if (!asms2->TryGetValue(asmName, existingAsm)) {
+    Console::WriteLine ("AssemblyUtil:: Adding " + asmName);
+    asms2->Add(asmName , myasm);
+    ++_asmCount;
+  }
+}
+
+Assembly^ AssemblyUtil::FindAsm (String^ myasm) {
+  Assembly^ returnAsm = nullptr;
+  if (!asms2->TryGetValue(myasm->ToLower(), returnAsm)) {
+    Console::WriteLine ("AssemblyUtil:: FindAsm_Not_Found " + 
myasm->ToString());
+  }
+  return returnAsm;
+}
+
+Assembly^ AssemblyUtil::MyResolveEventHandler(Object^ sender, 
ResolveEventArgs^ args) {
+  Console::WriteLine ("AssemblyUtil:: Resolving " + args->Name);
+  Assembly^ myAsm = AssemblyUtil::FindAsm(args->Name);
+  if (nullptr != myAsm) {
+    Console::WriteLine ("AssemblyUtil:: Found " + args->Name);
+  }
+  return myAsm ;
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/BinaryUtil.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/BinaryUtil.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/BinaryUtil.cpp
new file mode 100644
index 0000000..b7c3a2e
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/BinaryUtil.cpp
@@ -0,0 +1,102 @@
+/**
+ * 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.
+ */
+#include "InteropUtil.h"
+#include "BinaryUtil.h"
+
+DWORD GetActualAddressFromRVA(IMAGE_SECTION_HEADER* pSectionHeader, 
IMAGE_NT_HEADERS* pNTHeaders, DWORD dwRVA) {
+  DWORD dwRet = 0;
+
+  for (int j = 0; j < pNTHeaders->FileHeader.NumberOfSections; j++, 
pSectionHeader++) {
+    DWORD cbMaxOnDisk = min( pSectionHeader->Misc.VirtualSize, 
pSectionHeader->SizeOfRawData );
+
+    DWORD startSectRVA, endSectRVA;
+
+    startSectRVA = pSectionHeader->VirtualAddress;
+    endSectRVA = startSectRVA + cbMaxOnDisk;
+
+    if ( (dwRVA >= startSectRVA) && (dwRVA < endSectRVA)) {
+      dwRet =  (pSectionHeader->PointerToRawData ) + (dwRVA - startSectRVA);
+      break;
+    }
+
+  }
+
+  return dwRet;
+}
+
+
+BINARY_TYPE IsManagedBinary(const wchar_t*  lpszImageName) {
+  BINARY_TYPE binaryType = BINARY_TYPE_NONE;
+  HANDLE hFile = CreateFile(lpszImageName, GENERIC_READ, FILE_SHARE_READ, 
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+
+  if (INVALID_HANDLE_VALUE != hFile) {
+    //succeeded
+    HANDLE hOpenFileMapping = CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 
0, NULL);
+    if (hOpenFileMapping) {
+      BYTE* lpBaseAddress = NULL;
+
+      lpBaseAddress = (BYTE*)MapViewOfFile(hOpenFileMapping, FILE_MAP_READ, 0, 
0, 0);
+
+      if (lpBaseAddress) {
+        //having mapped the executable to our process space, now start 
navigating through the sections
+
+        //DOS header is straightforward. It is the topmost structure in the PE 
file
+        //i.e. the one at the lowest offset into the file
+        IMAGE_DOS_HEADER* pDOSHeader = (IMAGE_DOS_HEADER*)lpBaseAddress;
+
+        //the only important data in the DOS header is the e_lfanew
+        //the e_lfanew points to the offset of the beginning of NT Headers data
+        IMAGE_NT_HEADERS* pNTHeaders = (IMAGE_NT_HEADERS*)((BYTE*)pDOSHeader + 
pDOSHeader->e_lfanew);
+
+        IMAGE_SECTION_HEADER* pSectionHeader = 
(IMAGE_SECTION_HEADER*)((BYTE*)pNTHeaders + sizeof(IMAGE_NT_HEADERS));
+
+        //Now, start parsing
+        //check if it is a PE file
+
+        if (pNTHeaders->Signature == IMAGE_NT_SIGNATURE) {
+          //start parsing COM table
+
+          DWORD dwNETHeaderTableLocation = 
pNTHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR].VirtualAddress;
+
+          if (dwNETHeaderTableLocation) {
+            //import data does exist for this module
+            IMAGE_COR20_HEADER* pNETHeader = 
(IMAGE_COR20_HEADER*)((BYTE*)pDOSHeader + 
GetActualAddressFromRVA(pSectionHeader, pNTHeaders, dwNETHeaderTableLocation));
+
+            if (pNETHeader) {
+              binaryType = BINARY_TYPE_CLR;
+            }
+            else {
+              binaryType = BINARY_TYPE_NATIVE;
+            }
+          }
+          else {
+            binaryType = BINARY_TYPE_NATIVE;
+          }
+        }
+        else {
+          binaryType = BINARY_TYPE_NONE;
+        }
+        UnmapViewOfFile(lpBaseAddress);
+      }
+      CloseHandle(hOpenFileMapping);
+    }
+    CloseHandle(hFile);
+  }
+  return binaryType;
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/BinaryUtil.h
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/BinaryUtil.h 
b/lang/cs/Org.Apache.REEF.Bridge/BinaryUtil.h
new file mode 100644
index 0000000..dc946a6
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/BinaryUtil.h
@@ -0,0 +1,26 @@
+/**
+ * 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.
+ */
+typedef enum BINARY_TYPE {
+  BINARY_TYPE_NONE = 0,
+  BINARY_TYPE_NATIVE = 1,
+  BINARY_TYPE_CLR = 2,
+} BINARY_TYPE ;
+
+
+BINARY_TYPE IsManagedBinary(const wchar_t* lpszImageName);

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/ClosedContextClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/ClosedContextClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/ClosedContextClr2Java.cpp
new file mode 100644
index 0000000..6584abe
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/ClosedContextClr2Java.cpp
@@ -0,0 +1,90 @@
+/**
+ * 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.
+ */
+#include "Clr2JavaImpl.h"
+
+namespace Org {
+  namespace Apache {
+         namespace REEF {
+                 namespace Driver {
+                         namespace Bridge {
+                                 namespace Clr2java {
+                                         ref class ManagedLog {
+                                         internal:
+                                                 static BridgeLogger^ LOGGER = 
BridgeLogger::GetLogger("<C++>");
+                                         };
+                                         
ClosedContextClr2Java::ClosedContextClr2Java(JNIEnv *env, jobject 
jobjectClosedContext) {
+                                                 
ManagedLog::LOGGER->LogStart("ClosedContextClr2Java::ClosedContextClr2Java");
+
+                                                 pin_ptr<JavaVM*> pJavaVm = 
&_jvm;
+                                                 if (env->GetJavaVM(pJavaVm) 
!= 0) {
+                                                         
ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+                                                 }
+                                                 _jobjectClosedContext = 
reinterpret_cast<jobject>(env->NewGlobalRef(jobjectClosedContext));
+                                                 jclass jclassClosedContext = 
env->GetObjectClass(_jobjectClosedContext);
+
+                                                 jfieldID jidContextId = 
env->GetFieldID(jclassClosedContext, "contextId", "Ljava/lang/String;");
+                                                 jfieldID jidEvaluatorId = 
env->GetFieldID(jclassClosedContext, "evaluatorId", "Ljava/lang/String;");
+
+                                                 _jstringContextId = 
reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectClosedContext,
 jidContextId)));
+                                                 _jstringEvaluatorId = 
reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectClosedContext,
 jidEvaluatorId)));
+
+                                                 
ManagedLog::LOGGER->LogStop("ClosedContextClr2Java::ClosedContextClr2Java");
+                                         }
+
+                                         IActiveContextClr2Java^ 
ClosedContextClr2Java::GetParentContext() {
+                                                 
ManagedLog::LOGGER->LogStart("ClosedContextClr2Java::GetParentContext");
+
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+
+                                                 jclass jclassClosedContext = 
env->GetObjectClass(_jobjectClosedContext);
+                                                 jfieldID jidParentContext = 
env->GetFieldID(jclassClosedContext, "parentContext", 
"Lorg/apache/reef/javabridge/ActiveContextBridge;");
+                                                 jobject jobjectParentContext 
= env->GetObjectField(_jobjectClosedContext, jidParentContext);
+                                                 
ManagedLog::LOGGER->LogStop("ClosedContextClr2Java::GetParentContext");
+
+                                                 return gcnew 
ActiveContextClr2Java(env, jobjectParentContext);
+                                         }
+
+                                         String^ 
ClosedContextClr2Java::GetId() {
+                                                 
ManagedLog::LOGGER->Log("ClosedContextClr2Java::GetId");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 return 
ManagedStringFromJavaString(env, _jstringContextId);
+                                         }
+
+                                         String^ 
ClosedContextClr2Java::GetEvaluatorId() {
+                                                 
ManagedLog::LOGGER->Log("ClosedContextClr2Java::GetEvaluatorId");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 return 
ManagedStringFromJavaString(env, _jstringEvaluatorId);
+                                         }
+
+                                         IEvaluatorDescriptor^ 
ClosedContextClr2Java::GetEvaluatorDescriptor() {
+                                                 
ManagedLog::LOGGER->LogStart("ClosedContextClr2Java::GetEvaluatorDescriptor");
+                                                 return 
CommonUtilities::RetrieveEvaluatorDescriptor(_jobjectClosedContext, _jvm);
+                                         }
+
+                                         void 
ClosedContextClr2Java::OnError(String^ message) {
+                                                 
ManagedLog::LOGGER->Log("ClosedContextClr2Java::OnError");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 HandleClr2JavaError(env, 
message, _jobjectClosedContext);
+                                         }
+                                 }
+                         }
+                 }
+         }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h 
b/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h
new file mode 100644
index 0000000..b1e4491
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h
@@ -0,0 +1,223 @@
+/**
+ * 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.
+ */
+#include "InteropUtil.h"
+#include "org_apache_reef_javabridge_NativeInterop.h"
+#include "JavaClrBridge.h"
+#include "InteropAssemblies.h"
+#using "Org.Apache.REEF.Driver.dll"
+
+using namespace System;
+using namespace System::IO;
+using namespace System::Collections::Generic;
+using namespace System::Runtime::InteropServices;
+using namespace System::Reflection;
+using namespace Org::Apache::REEF::Driver::Bridge;
+using namespace Org::Apache::REEF::Driver::Evaluator;
+
+namespace Org {
+  namespace Apache {
+         namespace REEF {
+                 namespace Driver {
+                         namespace Bridge {
+                                 namespace Clr2java {
+                                         public ref class CommonUtilities {
+                                         public:
+                                                 static IEvaluatorDescriptor^ 
RetrieveEvaluatorDescriptor(jobject object, JavaVM* jvm);
+                                         };
+
+                                         public ref class 
AllocatedEvaluatorClr2Java : public IAllocatedEvaluaotrClr2Java {
+                                                 jobject  
_jobjectAllocatedEvaluator;
+                                                 JavaVM* _jvm;
+                                                 jstring _jstringId;
+                                                 jstring 
_jstringNameServerInfo;
+                                         public:
+                                                 
AllocatedEvaluatorClr2Java(JNIEnv *env, jobject jallocatedEvaluator);
+                                                 virtual void 
SubmitContextAndTask(String^ contextConfigStr, String^ taskConfigStr);
+                                                 virtual void 
SubmitContext(String^ contextConfigStr);
+                                                 virtual void 
SubmitContextAndService(String^ contextConfigStr, String^ serviceConfigStr);
+                                                 virtual void 
SubmitContextAndServiceAndTask(String^ contextConfigStr, String^ 
serviceConfigStr, String^ taskConfigStr);
+                                                 virtual void OnError(String^ 
message);
+                                                 virtual void Close();
+                                                 virtual String^ GetId();
+                                                 virtual String^ 
GetNameServerInfo();
+                                                 virtual IEvaluatorDescriptor^ 
GetEvaluatorDescriptor();
+                                         };
+
+                                         public ref class 
ActiveContextClr2Java : public IActiveContextClr2Java {
+                                                 jobject _jobjectActiveContext;
+                                                 jstring _jstringId;
+                                                 jstring _jstringEvaluatorId;
+                                                 JavaVM* _jvm;
+                                         public:
+                                                 ActiveContextClr2Java(JNIEnv 
*env, jobject jallocatedEvaluator);
+                                                 virtual void 
SubmitTask(String^ taskConfigStr);
+                                                 virtual void Close();
+                                                 virtual void OnError(String^ 
message);
+                                                 virtual String^ GetId();
+                                                 virtual String^ 
GetEvaluatorId();
+                                                 virtual IEvaluatorDescriptor^ 
GetEvaluatorDescriptor();
+                                         };
+
+                                         public ref class 
EvaluatorRequestorClr2Java : public IEvaluatorRequestorClr2Java {
+                                                 jobject  
_jobjectEvaluatorRequestor;
+                                                 JavaVM* _jvm;
+                                         public:
+                                                 
EvaluatorRequestorClr2Java(JNIEnv *env, jobject jevaluatorRequestor);
+                                                 virtual void OnError(String^ 
message);
+                                                 virtual void 
Submit(IEvaluatorRequest^ request);
+                                         };
+
+                                         public ref class TaskMessageClr2Java 
: public ITaskMessageClr2Java {
+                                                 jobject  _jobjectTaskMessage;
+                                                 JavaVM* _jvm;
+                                                 jstring _jstringId;
+                                         public:
+                                                 TaskMessageClr2Java(JNIEnv 
*env, jobject jtaskMessage);
+                                                 virtual void OnError(String^ 
message);
+                                                 virtual String^ GetId();
+                                         };
+
+                                         public ref class FailedTaskClr2Java : 
public IFailedTaskClr2Java {
+                                                 jobject  _jobjectFailedTask;
+                                                 JavaVM* _jvm;
+                                         public:
+                                                 FailedTaskClr2Java(JNIEnv 
*env, jobject jfailedTask);
+                                                 virtual void OnError(String^ 
message);
+                                                 virtual 
IActiveContextClr2Java^ GetActiveContext();
+                                                 virtual String^ GetString();
+                                         };
+
+                                         public ref class RunningTaskClr2Java 
: public IRunningTaskClr2Java {
+                                                 jobject  _jobjectRunningTask;
+                                                 JavaVM* _jvm;
+                                                 jstring _jstringId;
+                                         public:
+                                                 RunningTaskClr2Java(JNIEnv 
*env, jobject jrunningTask);
+                                                 virtual void OnError(String^ 
message);
+                                                 virtual 
IActiveContextClr2Java^ GetActiveContext();
+                                                 virtual String^ GetId();
+                                                 virtual void 
Send(array<byte>^ message);
+                                         };
+
+                                         public ref class 
FailedEvaluatorClr2Java : public IFailedEvaluatorClr2Java {
+                                                 jobject  
_jobjectFailedEvaluator;
+                                                 JavaVM* _jvm;
+                                                 jstring _jstringId;
+                                         public:
+                                                 
FailedEvaluatorClr2Java(JNIEnv *env, jobject jfailedEvaluator);
+                                                 virtual void OnError(String^ 
message);
+                                                 virtual 
IEvaluatorRequestorClr2Java^ GetEvaluatorRequestor();
+                                                 virtual String^ GetId();
+                                         };
+
+                                         public ref class HttpServerClr2Java : 
public IHttpServerBridgeClr2Java {
+                                                 jobject 
_jhttpServerEventBridge;
+                                                 JavaVM* _jvm;
+                                         public:
+                                                 HttpServerClr2Java(JNIEnv 
*env, jobject jhttpServerEventBridge);
+                                                 virtual void OnError(String^ 
message);
+                                                 virtual String^ 
GetQueryString();
+                                                 virtual void 
SetUriSpecification(String^ uriSpecification);
+                                                 virtual void 
SetQueryResult(String^ queryResult);
+                                                 virtual array<byte>^ 
GetQueryRequestData();
+                                                 virtual void 
SetQueryResponseData(array<byte>^ responseData);
+                                         };
+
+                                         public ref class 
CompletedTaskClr2Java : public ICompletedTaskClr2Java {
+                                                 jobject  
_jobjectCompletedTask;
+                                                 JavaVM* _jvm;
+                                                 jstring _jstringId;
+                                         public:
+                                                 CompletedTaskClr2Java(JNIEnv 
*env, jobject jcompletedTask);
+                                                 virtual void OnError(String^ 
message);
+                                                 virtual 
IActiveContextClr2Java^ GetActiveContext();
+                                                 virtual String^ GetId();
+                                         };
+
+                                         public ref class 
SuspendedTaskClr2Java : public ISuspendedTaskClr2Java {
+                                                 jobject  
_jobjectSuspendedTask;
+                                                 JavaVM* _jvm;
+                                                 jstring _jstringId;
+                                         public:
+                                                 SuspendedTaskClr2Java(JNIEnv 
*env, jobject jobjectSuspendedTask);
+                                                 virtual void OnError(String^ 
message);
+                                                 virtual 
IActiveContextClr2Java^ GetActiveContext();
+                                                 virtual String^ GetId();
+                                                 virtual array<byte>^ Get();
+                                         };
+
+                                         public ref class 
CompletedEvaluatorClr2Java : public ICompletedEvaluatorClr2Java {
+                                                 jobject  
_jobjectCompletedEvaluator;
+                                                 JavaVM* _jvm;
+                                                 jstring _jstringId;
+                                         public:
+                                                 
CompletedEvaluatorClr2Java(JNIEnv *env, jobject jobjectCompletedEvaluator);
+                                                 virtual void OnError(String^ 
message);
+                                                 virtual String^ GetId();
+                                         };
+
+                                         public ref class 
ClosedContextClr2Java : public IClosedContextClr2Java {
+                                                 jobject  
_jobjectClosedContext;
+                                                 JavaVM* _jvm;
+                                                 jstring _jstringContextId;
+                                                 jstring _jstringEvaluatorId;
+                                         public:
+                                                 ClosedContextClr2Java(JNIEnv 
*env, jobject jobjectClosedContext);
+                                                 virtual void OnError(String^ 
message);
+                                                 virtual String^ GetId();
+                                                 virtual String^ 
GetEvaluatorId();
+                                                 virtual IEvaluatorDescriptor^ 
GetEvaluatorDescriptor();
+                                                 virtual 
IActiveContextClr2Java^ GetParentContext();
+                                         };
+
+                                         public ref class 
FailedContextClr2Java : public IFailedContextClr2Java {
+                                                 jobject  
_jobjectFailedContext;
+                                                 JavaVM* _jvm;
+                                                 jstring _jstringContextId;
+                                                 jstring _jstringEvaluatorId;
+                                                 jstring 
_jstringParentContextId;
+                                         public:
+                                                 FailedContextClr2Java(JNIEnv 
*env, jobject jobjectFailedContext);
+                                                 virtual void OnError(String^ 
message);
+                                                 virtual String^ GetId();
+                                                 virtual String^ 
GetEvaluatorId();
+                                                 virtual String^ GetParentId();
+                                                 virtual IEvaluatorDescriptor^ 
GetEvaluatorDescriptor();
+                                                 virtual 
IActiveContextClr2Java^ GetParentContext();
+                                         };
+
+                                         public ref class 
ContextMessageClr2Java : public IContextMessageClr2Java {
+                                                 jobject  
_jobjectContextMessage;
+                                                 JavaVM* _jvm;
+                                                 jbyteArray _jarrayMessage;
+                                                 jstring _jstringId;
+                                                 jstring _jstringSourceId;
+                                         public:
+                                                 ContextMessageClr2Java(JNIEnv 
*env, jobject jobjectContextMessage);
+                                                 virtual void OnError(String^ 
message);
+                                                 virtual array<byte>^ Get();
+                                                 virtual String^ GetId();
+                                                 virtual String^ 
GetMessageSourceId();
+                                         };
+                                 }
+                         }
+                 }
+         }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/CommonUtilities.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/CommonUtilities.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/CommonUtilities.cpp
new file mode 100644
index 0000000..5de6e75
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/CommonUtilities.cpp
@@ -0,0 +1,55 @@
+/**
+ * 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.
+ */
+#include "Clr2JavaImpl.h"
+
+namespace Org {
+  namespace Apache {
+         namespace REEF {
+                 namespace Driver {
+                         namespace Bridge {
+                                 namespace Clr2java {
+                                         ref class ManagedLog {
+                                         internal:
+                                                 static BridgeLogger^ LOGGER = 
BridgeLogger::GetLogger("<C++>CommonUtilities");
+                                         };
+
+                                         IEvaluatorDescriptor^ 
CommonUtilities::RetrieveEvaluatorDescriptor(jobject object, JavaVM* jvm) {
+                                                 
ManagedLog::LOGGER->LogStart("CommonUtilities::GetEvaluatorDescriptor");
+                                                 JNIEnv *env = 
RetrieveEnv(jvm);
+                                                 jclass jclassActiveContext = 
env->GetObjectClass(object);
+                                                 jmethodID 
jmidGetEvaluatorDescriptor = env->GetMethodID(jclassActiveContext, 
"getEvaluatorDescriptorSring", "()Ljava/lang/String;");
+
+                                                 if 
(jmidGetEvaluatorDescriptor == NULL) {
+                                                         
ManagedLog::LOGGER->Log("jmidGetEvaluatorDescriptor is NULL");
+                                                         return nullptr;
+                                                 }
+                                                 jstring 
jevaluatorDescriptorString = (jstring)env->CallObjectMethod(
+                                                         object,
+                                                         
jmidGetEvaluatorDescriptor);
+                                                 String^ 
evaluatorDescriptorString = ManagedStringFromJavaString(env, 
jevaluatorDescriptorString);
+                                                 
ManagedLog::LOGGER->LogStop("InteropUtil::GetEvaluatorDescriptor");
+
+                                                 return gcnew 
EvaluatorDescriptorImpl(evaluatorDescriptorString);
+                                         }
+                                 }
+                         }
+                 }
+         }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/CompletedEvaluatorClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/CompletedEvaluatorClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/CompletedEvaluatorClr2Java.cpp
new file mode 100644
index 0000000..c961881
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/CompletedEvaluatorClr2Java.cpp
@@ -0,0 +1,62 @@
+/**
+ * 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.
+ */
+#include "Clr2JavaImpl.h"
+
+namespace Org {
+  namespace Apache {
+         namespace REEF {
+                 namespace Driver {
+                         namespace Bridge {
+                                 namespace Clr2java {
+                                         ref class ManagedLog {
+                                         internal:
+                                                 static BridgeLogger^ LOGGER = 
BridgeLogger::GetLogger("<C++>");
+                                         };
+
+                                         
CompletedEvaluatorClr2Java::CompletedEvaluatorClr2Java(JNIEnv *env, jobject 
jCompletedEvaluator) {
+                                                 
ManagedLog::LOGGER->LogStart("CompletedEvaluatorClr2Java::CompletedEvaluatorClr2Java");
+                                                 pin_ptr<JavaVM*> pJavaVm = 
&_jvm;
+                                                 if (env->GetJavaVM(pJavaVm) 
!= 0) {
+                                                         
ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+                                                 }
+                                                 _jobjectCompletedEvaluator = 
reinterpret_cast<jobject>(env->NewGlobalRef(jCompletedEvaluator));
+
+                                                 jclass 
jclassCompletedEvaluator = env->GetObjectClass(_jobjectCompletedEvaluator);
+                                                 jfieldID jidEvaluatorId = 
env->GetFieldID(jclassCompletedEvaluator, "evaluatorId", "Ljava/lang/String;");
+                                                 _jstringId = 
reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectCompletedEvaluator,
 jidEvaluatorId)));
+                                                 
ManagedLog::LOGGER->LogStop("CompletedEvaluatorClr2Java::CompletedEvaluatorClr2Java");
+                                         }
+
+                                         void 
CompletedEvaluatorClr2Java::OnError(String^ message) {
+                                                 
ManagedLog::LOGGER->Log("CompletedEvaluatorClr2Java::OnError");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 HandleClr2JavaError(env, 
message, _jobjectCompletedEvaluator);
+                                         }
+
+                                         String^ 
CompletedEvaluatorClr2Java::GetId() {
+                                                 
ManagedLog::LOGGER->Log("CompletedEvaluatorClr2Java::GetId");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 return 
ManagedStringFromJavaString(env, _jstringId);
+                                         }
+                                 }
+                         }
+                 }
+         }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/CompletedTaskClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/CompletedTaskClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/CompletedTaskClr2Java.cpp
new file mode 100644
index 0000000..be9fe31
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/CompletedTaskClr2Java.cpp
@@ -0,0 +1,73 @@
+/**
+ * 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.
+ */
+#include "Clr2JavaImpl.h"
+
+namespace Org {
+  namespace Apache {
+         namespace REEF {
+                 namespace Driver {
+                         namespace Bridge {
+                                 namespace Clr2java {
+                                         ref class ManagedLog {
+                                         internal:
+                                                 static BridgeLogger^ LOGGER = 
BridgeLogger::GetLogger("<C++>");
+                                         };
+
+                                         
CompletedTaskClr2Java::CompletedTaskClr2Java(JNIEnv *env, jobject 
jobjectCompletedTask) {
+                                                 
ManagedLog::LOGGER->LogStart("CompletedTaskClr2Java::CompletedTaskClr2Java");
+                                                 pin_ptr<JavaVM*> pJavaVm = 
&_jvm;
+                                                 if (env->GetJavaVM(pJavaVm) 
!= 0) {
+                                                         
ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+                                                 }
+                                                 _jobjectCompletedTask = 
reinterpret_cast<jobject>(env->NewGlobalRef(jobjectCompletedTask));
+
+                                                 jclass jclassCompletedTask = 
env->GetObjectClass(_jobjectCompletedTask);
+                                                 jfieldID jidTaskId = 
env->GetFieldID(jclassCompletedTask, "taskId", "Ljava/lang/String;");
+                                                 _jstringId = 
reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectCompletedTask,
 jidTaskId)));
+                                                 
ManagedLog::LOGGER->LogStop("CompletedTaskClr2Java::CompletedTaskClr2Java");
+                                         }
+
+                                         void 
CompletedTaskClr2Java::OnError(String^ message) {
+                                                 
ManagedLog::LOGGER->Log("CompletedTaskClr2Java::OnError");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 HandleClr2JavaError(env, 
message, _jobjectCompletedTask);
+                                         }
+
+                                         IActiveContextClr2Java^ 
CompletedTaskClr2Java::GetActiveContext() {
+                                                 
ManagedLog::LOGGER->LogStart("CompletedTaskClr2Java::GetActiveContext");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+
+                                                 jclass jclassCompletedTask = 
env->GetObjectClass(_jobjectCompletedTask);
+                                                 jfieldID jidActiveContext = 
env->GetFieldID(jclassCompletedTask, "jactiveContext", 
"Lorg/apache/reef/javabridge/ActiveContextBridge;");
+                                                 jobject jobjectActiveContext 
= env->GetObjectField(_jobjectCompletedTask, jidActiveContext);
+                                                 
ManagedLog::LOGGER->LogStop("CompletedTaskClr2Java::GetActiveContext");
+                                                 return gcnew 
ActiveContextClr2Java(env, jobjectActiveContext);
+                                         }
+
+                                         String^ 
CompletedTaskClr2Java::GetId() {
+                                                 
ManagedLog::LOGGER->Log("CompletedTaskClr2Java::GetId");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 return 
ManagedStringFromJavaString(env, _jstringId);
+                                         }
+                                 }
+                         }
+                 }
+         }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/ContextMessageClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/ContextMessageClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/ContextMessageClr2Java.cpp
new file mode 100644
index 0000000..c385e46
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/ContextMessageClr2Java.cpp
@@ -0,0 +1,80 @@
+/**
+ * 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.
+ */
+#include "Clr2JavaImpl.h"
+
+namespace Org {
+  namespace Apache {
+         namespace REEF {
+                 namespace Driver {
+                         namespace Bridge {
+                                 namespace Clr2java {
+                                         ref class ManagedLog {
+                                         internal:
+                                                 static BridgeLogger^ LOGGER = 
BridgeLogger::GetLogger("<C++>");
+                                         };
+                                         
ContextMessageClr2Java::ContextMessageClr2Java(JNIEnv *env, jobject 
jobjectContextMessage) {
+                                                 
ManagedLog::LOGGER->LogStart("ContextMessageClr2Java::ContextMessageClr2Java");
+
+                                                 pin_ptr<JavaVM*> pJavaVm = 
&_jvm;
+                                                 if (env->GetJavaVM(pJavaVm) 
!= 0) {
+                                                         
ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+                                                 }
+                                                 _jobjectContextMessage = 
reinterpret_cast<jobject>(env->NewGlobalRef(jobjectContextMessage));
+                                                 jclass jclassContextMessage = 
env->GetObjectClass(_jobjectContextMessage);
+
+                                                 jfieldID jidId = 
env->GetFieldID(jclassContextMessage, "contextMessageId", "Ljava/lang/String;");
+                                                 jfieldID jidSourceId = 
env->GetFieldID(jclassContextMessage, "messageSourceId", "Ljava/lang/String;");
+                                                 jfieldID jidMessage = 
env->GetFieldID(jclassContextMessage, "message", "()[B");
+
+                                                 _jstringId = 
reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectContextMessage,
 jidId)));
+                                                 _jstringSourceId = 
reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectContextMessage,
 jidSourceId)));
+                                                 _jarrayMessage = 
reinterpret_cast<jbyteArray>(env->NewGlobalRef(env->GetObjectField(_jobjectContextMessage,
 jidMessage)));
+
+                                                 
ManagedLog::LOGGER->LogStop("ContextMessageClr2Java::ContextMessageClr2Java");
+                                         }
+
+                                         String^ 
ContextMessageClr2Java::GetId() {
+                                                 
ManagedLog::LOGGER->Log("ContextMessageClr2Java::GetId");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 return 
ManagedStringFromJavaString(env, _jstringId);
+                                         }
+
+                                         String^ 
ContextMessageClr2Java::GetMessageSourceId() {
+                                                 
ManagedLog::LOGGER->Log("ContextMessageClr2Java::GetMessageSourceId");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 return 
ManagedStringFromJavaString(env, _jstringSourceId);
+                                         }
+
+                                         array<byte>^ 
ContextMessageClr2Java::Get() {
+                                                 
ManagedLog::LOGGER->Log("ContextMessageClr2Java::Get");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 return 
ManagedByteArrayFromJavaByteArray(env, _jarrayMessage);
+                                         }
+
+                                         void 
ContextMessageClr2Java::OnError(String^ message) {
+                                                 
ManagedLog::LOGGER->Log("ContextMessageClr2Java::OnError");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 HandleClr2JavaError(env, 
message, _jobjectContextMessage);
+                                         }
+                                 }
+                         }
+                 }
+         }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/EvaluatorRequestorClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/EvaluatorRequestorClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/EvaluatorRequestorClr2Java.cpp
new file mode 100644
index 0000000..2daed9e
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/EvaluatorRequestorClr2Java.cpp
@@ -0,0 +1,73 @@
+/**
+ * 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.
+ */
+#include "Clr2JavaImpl.h"
+
+namespace Org {
+  namespace Apache {
+         namespace REEF {
+                 namespace Driver {
+                         namespace Bridge {
+                                 namespace Clr2java {
+                                         ref class ManagedLog {
+                                         internal:
+                                                 static BridgeLogger^ LOGGER = 
BridgeLogger::GetLogger("<C++>");
+                                         };
+
+                                         
EvaluatorRequestorClr2Java::EvaluatorRequestorClr2Java(JNIEnv *env, jobject 
jevaluatorRequestor) {
+                                                 
ManagedLog::LOGGER->LogStart("EvaluatorRequestorClr2Java::EvaluatorRequestorClr2Java");
+                                                 pin_ptr<JavaVM*> pJavaVm = 
&_jvm;
+                                                 if (env->GetJavaVM(pJavaVm) 
!= 0) {
+                                                         
ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+                                                 }
+                                                 _jobjectEvaluatorRequestor = 
reinterpret_cast<jobject>(env->NewGlobalRef(jevaluatorRequestor));
+                                                 
ManagedLog::LOGGER->LogStop("EvaluatorRequestorClr2Java::EvaluatorRequestorClr2Java");
+                                         }
+
+                                         void 
EvaluatorRequestorClr2Java::Submit(IEvaluatorRequest^ request) {
+                                                 
ManagedLog::LOGGER->LogStart("EvaluatorRequestorClr2Java::Submit");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 jclass 
jclassEvaluatorRequestor = env->GetObjectClass(_jobjectEvaluatorRequestor);
+                                                 jmethodID jmidSubmit = 
env->GetMethodID(jclassEvaluatorRequestor, "submit", 
"(IIILjava/lang/String;)V");
+
+                                                 if (jmidSubmit == NULL) {
+                                                         fprintf(stdout, " 
jmidSubmit is NULL\n");
+                                                         fflush(stdout);
+                                                         return;
+                                                 }
+                                                 env->CallObjectMethod(
+                                                         
_jobjectEvaluatorRequestor,
+                                                         jmidSubmit,
+                                                         request->Number,
+                                                         
request->MemoryMegaBytes,
+                                                         request->VirtualCore,
+                                                         
JavaStringFromManagedString(env, request->Rack));
+                                                 
ManagedLog::LOGGER->LogStop("EvaluatorRequestorClr2Java::Submit");
+                                         }
+
+                                         void 
EvaluatorRequestorClr2Java::OnError(String^ message) {
+                                                 
ManagedLog::LOGGER->Log("EvaluatorRequestorClr2Java::OnError");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 HandleClr2JavaError(env, 
message, _jobjectEvaluatorRequestor);
+                                         }
+                                 }
+                         }
+                 }
+         }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/FailedContextClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/FailedContextClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/FailedContextClr2Java.cpp
new file mode 100644
index 0000000..5a96202
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/FailedContextClr2Java.cpp
@@ -0,0 +1,98 @@
+/**
+ * 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.
+ */
+#include "Clr2JavaImpl.h"
+
+namespace Org {
+  namespace Apache {
+         namespace REEF {
+                 namespace Driver {
+                         namespace Bridge {
+                                 namespace Clr2java {
+                                         ref class ManagedLog {
+                                         internal:
+                                                 static BridgeLogger^ LOGGER = 
BridgeLogger::GetLogger("<C++>");
+                                         };
+                                         
FailedContextClr2Java::FailedContextClr2Java(JNIEnv *env, jobject 
jobjectFailedContext) {
+                                                 
ManagedLog::LOGGER->LogStart("FailedContextClr2Java::FailedContextClr2Java");
+
+                                                 pin_ptr<JavaVM*> pJavaVm = 
&_jvm;
+                                                 if (env->GetJavaVM(pJavaVm) 
!= 0) {
+                                                         
ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+                                                 }
+                                                 _jobjectFailedContext = 
reinterpret_cast<jobject>(env->NewGlobalRef(jobjectFailedContext));
+                                                 jclass jclassFailedContext = 
env->GetObjectClass(_jobjectFailedContext);
+
+                                                 jfieldID jidContextId = 
env->GetFieldID(jclassFailedContext, "contextId", "Ljava/lang/String;");
+                                                 jfieldID jidEvaluatorId = 
env->GetFieldID(jclassFailedContext, "evaluatorId", "Ljava/lang/String;");
+                                                 jfieldID jidParentId = 
env->GetFieldID(jclassFailedContext, "parentContextId", "Ljava/lang/String;");
+
+                                                 _jstringContextId = 
reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectFailedContext,
 jidContextId)));
+                                                 _jstringEvaluatorId = 
reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectFailedContext,
 jidEvaluatorId)));
+                                                 _jstringParentContextId = 
reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectFailedContext,
 jidParentId)));
+
+                                                 
ManagedLog::LOGGER->LogStop("FailedContextClr2Java::FailedContextClr2Java");
+                                         }
+
+                                         IActiveContextClr2Java^ 
FailedContextClr2Java::GetParentContext() {
+                                                 
ManagedLog::LOGGER->LogStart("FailedContextClr2Java::GetParentContext");
+
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+
+                                                 jclass jclassFailedContext = 
env->GetObjectClass(_jobjectFailedContext);
+                                                 jfieldID jidParentContext = 
env->GetFieldID(jclassFailedContext, "parentContext", 
"Lorg/apache/reef/javabridge/ActiveContextBridge;");
+                                                 jobject jobjectParentContext 
= env->GetObjectField(_jobjectFailedContext, jidParentContext);
+                                                 
ManagedLog::LOGGER->LogStop("FailedContextClr2Java::GetParentContext");
+
+                                                 return gcnew 
ActiveContextClr2Java(env, jobjectParentContext);
+                                         }
+
+                                         String^ 
FailedContextClr2Java::GetId() {
+                                                 
ManagedLog::LOGGER->Log("FailedContextClr2Java::GetId");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 return 
ManagedStringFromJavaString(env, _jstringContextId);
+                                         }
+
+                                         String^ 
FailedContextClr2Java::GetEvaluatorId() {
+                                                 
ManagedLog::LOGGER->Log("FailedContextClr2Java::GetEvaluatorId");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 return 
ManagedStringFromJavaString(env, _jstringEvaluatorId);
+                                         }
+
+                                         String^ 
FailedContextClr2Java::GetParentId() {
+                                                 
ManagedLog::LOGGER->Log("FailedContextClr2Java::GetParentId");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 return 
ManagedStringFromJavaString(env, _jstringParentContextId);
+                                         }
+
+                                         IEvaluatorDescriptor^ 
FailedContextClr2Java::GetEvaluatorDescriptor() {
+                                                 
ManagedLog::LOGGER->LogStart("FailedContextClr2Java::GetEvaluatorDescriptor");
+                                                 return 
CommonUtilities::RetrieveEvaluatorDescriptor(_jobjectFailedContext, _jvm);
+                                         }
+
+                                         void 
FailedContextClr2Java::OnError(String^ message) {
+                                                 
ManagedLog::LOGGER->Log("FailedContextClr2Java::OnError");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 HandleClr2JavaError(env, 
message, _jobjectFailedContext);
+                                         }
+                                 }
+                         }
+                 }
+         }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/FailedEvaluatorClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/FailedEvaluatorClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/FailedEvaluatorClr2Java.cpp
new file mode 100644
index 0000000..615e09f
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/FailedEvaluatorClr2Java.cpp
@@ -0,0 +1,76 @@
+/**
+ * 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.
+ */
+#include "Clr2JavaImpl.h"
+
+using namespace JavaClrBridge;
+
+namespace Org {
+  namespace Apache {
+         namespace REEF {
+                 namespace Driver {
+                         namespace Bridge {
+                                 namespace Clr2java {
+                                         ref class ManagedLog {
+                                         internal:
+                                                 static BridgeLogger^ LOGGER = 
BridgeLogger::GetLogger("<C++>");
+                                         };
+
+                                         
FailedEvaluatorClr2Java::FailedEvaluatorClr2Java(JNIEnv *env, jobject 
jobjectFailedEvaluator) {
+                                                 
ManagedLog::LOGGER->LogStart("FailedEvaluatorClr2Java::FailedEvaluatorClr2Java");
+                                                 pin_ptr<JavaVM*> pJavaVm = 
&_jvm;
+                                                 if (env->GetJavaVM(pJavaVm) 
!= 0) {
+                                                         
ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+                                                 }
+                                                 _jobjectFailedEvaluator = 
reinterpret_cast<jobject>(env->NewGlobalRef(jobjectFailedEvaluator));
+
+                                                 jclass jclassFailedEvaluator 
= env->GetObjectClass(_jobjectFailedEvaluator);
+                                                 jfieldID jidEvaluatorId = 
env->GetFieldID(jclassFailedEvaluator, "evaluatorId", "Ljava/lang/String;");
+                                                 _jstringId = 
reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectFailedEvaluator,
 jidEvaluatorId)));
+                                                 
ManagedLog::LOGGER->LogStop("FailedEvaluatorClr2Java::FailedEvaluatorClr2Java");
+                                         }
+
+                                         IEvaluatorRequestorClr2Java^ 
FailedEvaluatorClr2Java::GetEvaluatorRequestor() {
+                                                 
ManagedLog::LOGGER->LogStart("FailedEvaluatorClr2Java::GetEvaluatorRequestor");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+
+                                                 jclass jclassFailedEvaluator 
= env->GetObjectClass(_jobjectFailedEvaluator);
+                                                 jfieldID 
jidEvaluatorRequestor = env->GetFieldID(jclassFailedEvaluator, 
"evaluatorRequestorBridge", 
"Lorg/apache/reef/javabridge/EvaluatorRequestorBridge;");
+                                                 jobject 
jobjectEvaluatorRequestor = env->GetObjectField(_jobjectFailedEvaluator, 
jidEvaluatorRequestor);
+                                                 
ManagedLog::LOGGER->LogStop("FailedEvaluatorClr2Java::GetEvaluatorRequestor");
+                                                 return gcnew 
EvaluatorRequestorClr2Java(env, jobjectEvaluatorRequestor);
+                                         }
+
+                                         String^ 
FailedEvaluatorClr2Java::GetId() {
+                                                 
ManagedLog::LOGGER->Log("FailedEvaluatorClr2Java::GetId");
+
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 return 
ManagedStringFromJavaString(env, _jstringId);
+                                         }
+
+                                         void 
FailedEvaluatorClr2Java::OnError(String^ message) {
+                                                 
ManagedLog::LOGGER->Log("FailedEvaluatorClr2Java::OnError");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 HandleClr2JavaError(env, 
message, _jobjectFailedEvaluator);
+                                         }
+                                 }
+                         }
+                 }
+         }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/FailedTaskClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/FailedTaskClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/FailedTaskClr2Java.cpp
new file mode 100644
index 0000000..b27b13d
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/FailedTaskClr2Java.cpp
@@ -0,0 +1,83 @@
+/**
+ * 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.
+ */
+#include "Clr2JavaImpl.h"
+
+namespace Org {
+  namespace Apache {
+         namespace REEF {
+                 namespace Driver {
+                         namespace Bridge {
+                                 namespace Clr2java {
+                                         ref class ManagedLog {
+                                         internal:
+                                                 static BridgeLogger^ LOGGER = 
BridgeLogger::GetLogger("<C++>");
+                                         };
+
+                                         
FailedTaskClr2Java::FailedTaskClr2Java(JNIEnv *env, jobject jobjectFailedTask) {
+                                                 
ManagedLog::LOGGER->LogStart("FailedTaskClr2Java::AllocatedEvaluatorClr2Java");
+                                                 pin_ptr<JavaVM*> pJavaVm = 
&_jvm;
+                                                 if (env->GetJavaVM(pJavaVm) 
!= 0) {
+                                                         
ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+                                                 }
+                                                 _jobjectFailedTask = 
reinterpret_cast<jobject>(env->NewGlobalRef(jobjectFailedTask));
+                                                 
ManagedLog::LOGGER->LogStop("FailedTaskClr2Java::AllocatedEvaluatorClr2Java");
+                                         }
+
+                                         IActiveContextClr2Java^ 
FailedTaskClr2Java::GetActiveContext() {
+                                                 
ManagedLog::LOGGER->LogStart("FailedTaskClr2Java::GetActiveContext");
+
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+
+                                                 jclass jclassFailedTask = 
env->GetObjectClass(_jobjectFailedTask);
+                                                 jfieldID jidActiveContext = 
env->GetFieldID(jclassFailedTask, "jactiveContext", 
"Lorg/apache/reef/javabridge/ActiveContextBridge;");
+                                                 jobject jobjectActiveContext 
= env->GetObjectField(_jobjectFailedTask, jidActiveContext);
+
+                                                 
ManagedLog::LOGGER->LogStop("FailedTaskClr2Java::GetActiveContext");
+                                                 return gcnew 
ActiveContextClr2Java(env, jobjectActiveContext);
+                                         }
+
+                                         String^ 
FailedTaskClr2Java::GetString() {
+                                                 
ManagedLog::LOGGER->LogStart("FailedTaskClr2Java::GetString");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+
+                                                 jclass jclassFailedTask = 
env->GetObjectClass(_jobjectFailedTask);
+                                                 jmethodID 
jmidGetFailedTaskString = env->GetMethodID(jclassFailedTask, 
"getFailedTaskString", "()Ljava/lang/String;");
+
+                                                 if (jmidGetFailedTaskString 
== NULL) {
+                                                         
ManagedLog::LOGGER->LogStart("jmidGetFailedTaskString is NULL");
+                                                         return nullptr;
+                                                 }
+                                                 jstring jFailedTaskString = 
(jstring)env->CallObjectMethod(
+                                                         _jobjectFailedTask,
+                                                         
jmidGetFailedTaskString);
+                                                 
ManagedLog::LOGGER->LogStop("FailedTaskClr2Java::GetString");
+                                                 return 
ManagedStringFromJavaString(env, jFailedTaskString);
+                                         }
+
+                                         void 
FailedTaskClr2Java::OnError(String^ message) {
+                                                 
ManagedLog::LOGGER->Log("FailedTaskClr2Java::OnError");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 HandleClr2JavaError(env, 
message, _jobjectFailedTask);
+                                         }
+                                 }
+                         }
+                 }
+         }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/HttpServerClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/HttpServerClr2Java.cpp 
b/lang/cs/Org.Apache.REEF.Bridge/HttpServerClr2Java.cpp
new file mode 100644
index 0000000..f8a819d
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/HttpServerClr2Java.cpp
@@ -0,0 +1,139 @@
+/**
+ * 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.
+ */
+#include "Clr2JavaImpl.h"
+
+namespace Org {
+  namespace Apache {
+         namespace REEF {
+                 namespace Driver {
+                         namespace Bridge {
+                                 namespace Clr2java {
+                                         ref class ManagedLog {
+                                         internal:
+                                                 static BridgeLogger^ LOGGER = 
BridgeLogger::GetLogger("<C++>");
+                                         };
+
+                                         
HttpServerClr2Java::HttpServerClr2Java(JNIEnv *env, jobject 
jhttpServerEventBridge) {
+                                                 
ManagedLog::LOGGER->LogStart("HttpServerClr2Java::HttpServerClr2Java");
+                                                 pin_ptr<JavaVM*> pJavaVm = 
&_jvm;
+                                                 if (env->GetJavaVM(pJavaVm) 
!= 0) {
+                                                         
ManagedLog::LOGGER->LogError("Failed to get JavaVM", nullptr);
+                                                 }
+                                                 _jhttpServerEventBridge = 
reinterpret_cast<jobject>(env->NewGlobalRef(jhttpServerEventBridge));
+                                                 
ManagedLog::LOGGER->LogStop("HttpServerClr2Java::HttpServerClr2Java");
+                                         }
+
+                                         String^ 
HttpServerClr2Java::GetQueryString() {
+                                                 
ManagedLog::LOGGER->LogStart("HttpServerClr2Java::GetQueryString");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 jclass 
jclasshttpServerEventBridge = env->GetObjectClass(_jhttpServerEventBridge);
+                                                 jmethodID jmidgetQueryString 
= env->GetMethodID(jclasshttpServerEventBridge, "getQueryString", 
"()Ljava/lang/String;");
+                                                 if (jmidgetQueryString == 
NULL) {
+                                                         fprintf(stdout, " 
jmidgetQueryString is NULL\n");
+                                                         fflush(stdout);
+                                                         return nullptr;
+                                                 }
+                                                 jstring jQueryString = 
(jstring)env->CallObjectMethod(
+                                                         
_jhttpServerEventBridge,
+                                                         jmidgetQueryString);
+
+                                                 
ManagedLog::LOGGER->LogStop("HttpServerClr2Java::GetQueryString");
+                                                 return 
ManagedStringFromJavaString(env, jQueryString);
+                                         }
+
+                                         array<byte>^ 
HttpServerClr2Java::GetQueryRequestData() {
+                                                 
ManagedLog::LOGGER->LogStart("HttpServerClr2Java::GetQueryRequestData");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 jclass 
jclasshttpServerEventBridge = env->GetObjectClass(_jhttpServerEventBridge);
+                                                 jmethodID jmidgetQueryBytes = 
env->GetMethodID(jclasshttpServerEventBridge, "getQueryRequestData", "()[B");
+
+                                                 if (jmidgetQueryBytes == 
NULL) {
+                                                         
ManagedLog::LOGGER->Log("jmidgetQueryBytes is NULL");
+                                                         return nullptr;
+                                                 }
+                                                 jbyteArray jQueryBytes = 
(jbyteArray)env->CallObjectMethod(
+                                                         
_jhttpServerEventBridge,
+                                                         jmidgetQueryBytes);
+
+                                                 
ManagedLog::LOGGER->LogStop("HttpServerClr2Java::GetQueryRequestData");
+                                                 return 
ManagedByteArrayFromJavaByteArray(env, jQueryBytes);
+                                         }
+
+                                         void 
HttpServerClr2Java::SetQueryResult(String^ queryResult) {
+                                                 
ManagedLog::LOGGER->LogStart("HttpServerClr2Java::SetQueryResult");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 jclass 
jclasshttpServerEventBridge = env->GetObjectClass(_jhttpServerEventBridge);
+                                                 jmethodID jmidsetQueryResult 
= env->GetMethodID(jclasshttpServerEventBridge, "setQueryResult", 
"(Ljava/lang/String;)V");
+
+                                                 if (jmidsetQueryResult == 
NULL) {
+                                                         
ManagedLog::LOGGER->Log("jmidsetQueryResult is NULL");
+                                                         return;
+                                                 }
+                                                 env->CallObjectMethod(
+                                                         
_jhttpServerEventBridge,
+                                                         jmidsetQueryResult,
+                                                         
JavaStringFromManagedString(env, queryResult));
+                                                 
ManagedLog::LOGGER->LogStop("HttpServerClr2Java::SetQueryResult");
+                                         }
+
+                                         void 
HttpServerClr2Java::SetQueryResponseData(array<byte>^ queryResponseData) {
+                                                 
ManagedLog::LOGGER->LogStart("HttpServerClr2Java::SetQueryResponseData");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 jclass 
jclasshttpServerEventBridge = env->GetObjectClass(_jhttpServerEventBridge);
+                                                 jmethodID jmidsetQueryResult 
= env->GetMethodID(jclasshttpServerEventBridge, "setQueryResponseData", 
"([B)V");
+
+                                                 if (jmidsetQueryResult == 
NULL) {
+                                                         
ManagedLog::LOGGER->Log("jmidsetQueryResult is NULL");
+                                                         return;
+                                                 }
+                                                 env->CallObjectMethod(
+                                                         
_jhttpServerEventBridge,
+                                                         jmidsetQueryResult,
+                                                         
JavaByteArrayFromManagedByteArray(env, queryResponseData));
+                                                 
ManagedLog::LOGGER->LogStop("HttpServerClr2Java::SetQueryResponseData");
+                                         }
+
+                                         void 
HttpServerClr2Java::SetUriSpecification(String^ uriSpecification) {
+                                                 
ManagedLog::LOGGER->LogStart("HttpServerClr2Java::SetUriSpecification");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 jclass 
jclasshttpServerEventBridge = env->GetObjectClass(_jhttpServerEventBridge);
+                                                 jmethodID 
jmidsetUriSpecification = env->GetMethodID(jclasshttpServerEventBridge, 
"setUriSpecification", "(Ljava/lang/String;)V");
+
+                                                 if (jmidsetUriSpecification 
== NULL) {
+                                                         
ManagedLog::LOGGER->Log("jmidsetUriSpecification is NULL");
+                                                         return;
+                                                 }
+                                                 env->CallObjectMethod(
+                                                         
_jhttpServerEventBridge,
+                                                         
jmidsetUriSpecification,
+                                                         
JavaStringFromManagedString(env, uriSpecification));
+                                                 
ManagedLog::LOGGER->LogStop("HttpServerClr2Java::SetUriSpecification");
+                                         }
+
+                                         void 
HttpServerClr2Java::OnError(String^ message) {
+                                                 
ManagedLog::LOGGER->Log("HttpServerClr2Java::OnError");
+                                                 JNIEnv *env = 
RetrieveEnv(_jvm);
+                                                 HandleClr2JavaError(env, 
message, _jhttpServerEventBridge);
+                                         }
+                                 }
+                         }
+                 }
+         }
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/492da34a/lang/cs/Org.Apache.REEF.Bridge/InteropAssemblies.h
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/InteropAssemblies.h 
b/lang/cs/Org.Apache.REEF.Bridge/InteropAssemblies.h
new file mode 100644
index 0000000..2e80d71
--- /dev/null
+++ b/lang/cs/Org.Apache.REEF.Bridge/InteropAssemblies.h
@@ -0,0 +1,40 @@
+/**
+ * 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.
+ */
+#pragma once
+#define _USING_V110_SDK71_
+
+#pragma warning( push )
+#pragma warning( disable : 4793 )
+#include <jni.h>
+#pragma warning( pop )
+#include "mscoree.h"
+#include "vcclr.h"
+
+using namespace System;
+using namespace System::Reflection;
+using namespace System::Collections::Generic;
+
+public ref class AssemblyUtil {
+  public :
+    static int _asmCount = 0;
+    static Dictionary<String^, System::Reflection::Assembly^>^  asms2 = gcnew 
Dictionary<String^, Assembly^>();
+    static void Add(Assembly^  myasm);
+    static Assembly^ FindAsm (String^ myasm);
+    static Assembly^ MyResolveEventHandler(Object^ sender, ResolveEventArgs^ 
args);
+};

Reply via email to