You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@reef.apache.org by se...@apache.org on 2015/01/31 00:51:40 UTC

[8/8] incubator-reef git commit: [REEF-116] Moving bridge code to proper folder structure

[REEF-116] Moving bridge code to proper folder structure

Currently Reef-bridge related code is under reef-bridge-project which includes
both java and cpp code. This PR is to address the issue described in
[REEF-116]. It includes the following:

 - move reef-bridge-clr from java\reef-bridge\project to cpp
 - move reef-bridge from java\reef-bridge\project to lang
 - move reef-bridge-java from java\reef-bridge\project to java
 - Remove additional layer java\reef-bridge-project layer
 - pom file in reef-bridge will generate shaded jar

JIRA:
  [REEF-116] https://issues.apache.org/jira/browse/REEF-116

Pull Request:
  Closes #60


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

Branch: refs/heads/master
Commit: 22f651f8ca8aff1d929c448cd8a0aedd62a7491a
Parents: 16f6c4b
Author: Julia Wang <jw...@yahoo.com>
Authored: Fri Jan 30 10:04:44 2015 -0800
Committer: Beysim Sezgin <se...@apache.org>
Committed: Fri Jan 30 15:45:03 2015 -0800

----------------------------------------------------------------------
 lang/cpp/.gitignore                             |   8 +
 lang/cpp/reef-bridge-clr/pom.xml                | 168 +++++
 .../CSharp/CSharp/ClrHandler/ClrHandler.csproj  |  66 ++
 .../ClrHandler/Properties/AssemblyInfo.cs       |  49 ++
 .../externals/Org.Apache.Reef.Driver.dll        | Bin 0 -> 115712 bytes
 .../CSharp/ClrHandler/externals/msvcr110.dll    | Bin 0 -> 849360 bytes
 .../ClrHandler/interface/IInteropReturnInfo.cs  |  30 +
 .../CSharp/ClrHandler/interface/ILogger.cs      |  37 +
 .../JavaClrBridge/ActiveContextClr2Java.cpp     | 108 +++
 .../AllocatedEvaluatorClr2Java.cpp              | 166 +++++
 .../CppBridge/JavaClrBridge/AssemblyInfo.cpp    |  50 ++
 .../CppBridge/JavaClrBridge/AssemblyUtil.cpp    |  53 ++
 .../Cpp/CppBridge/JavaClrBridge/BinaryUtil.cpp  | 102 +++
 .../Cpp/CppBridge/JavaClrBridge/BinaryUtil.h    |  26 +
 .../JavaClrBridge/ClosedContextClr2Java.cpp     |  88 +++
 .../CppBridge/JavaClrBridge/Clr2JavaImpl.cpp    |  44 ++
 .../Cpp/CppBridge/JavaClrBridge/Clr2JavaImpl.h  | 222 ++++++
 .../CppBridge/JavaClrBridge/CommonUtilities.cpp |  53 ++
 .../CompletedEvaluatorClr2Java.cpp              |  60 ++
 .../JavaClrBridge/CompletedTaskClr2Java.cpp     |  71 ++
 .../JavaClrBridge/ContextMessageClr2Java.cpp    |  78 ++
 .../EvaluatorRequestorClr2Java.cpp              |  71 ++
 .../JavaClrBridge/FailedContextClr2Java.cpp     |  96 +++
 .../JavaClrBridge/FailedEvaluatorClr2Java.cpp   |  74 ++
 .../JavaClrBridge/FailedTaskClr2Java.cpp        |  81 +++
 .../JavaClrBridge/HttpServerClr2Java.cpp        | 137 ++++
 .../CppBridge/JavaClrBridge/InteropAssemblies.h |  40 +
 .../CppBridge/JavaClrBridge/InteropLogger.cpp   |  50 ++
 .../Cpp/CppBridge/JavaClrBridge/InteropLogger.h |  47 ++
 .../JavaClrBridge/InteropReturnInfo.cpp         |  88 +++
 .../CppBridge/JavaClrBridge/InteropReturnInfo.h |  57 ++
 .../Cpp/CppBridge/JavaClrBridge/InteropUtil.cpp | 129 ++++
 .../Cpp/CppBridge/JavaClrBridge/InteropUtil.h   |  65 ++
 .../CppBridge/JavaClrBridge/JavaClrBridge.cpp   | 492 +++++++++++++
 .../Cpp/CppBridge/JavaClrBridge/JavaClrBridge.h |  33 +
 .../CppBridge/JavaClrBridge/JavaClrBridge.sln   |  56 ++
 .../JavaClrBridge/JavaClrBridge.vcxproj         | 173 +++++
 .../JavaClrBridge/JavaClrBridge.vcxproj.filters | 104 +++
 .../CppBridge/JavaClrBridge/ManagedLogger.cpp   |  47 ++
 .../main/Cpp/CppBridge/JavaClrBridge/ReadMe.txt |  57 ++
 .../JavaClrBridge/RunningTaskClr2Java.cpp       |  92 +++
 .../JavaClrBridge/SuspendedTaskClr2Java.cpp     |  85 +++
 .../JavaClrBridge/TaskMessageClr2Java.cpp       |  60 ++
 ...bridge-0.11.0-incubating-SNAPSHOT-shaded.jar | Bin 13555831 -> 13555093 bytes
 lang/java/reef-bridge-java/pom.xml              | 116 +++
 .../reef/javabridge/ActiveContextBridge.java    |  80 ++
 .../javabridge/AllocatedEvaluatorBridge.java    | 141 ++++
 .../reef/javabridge/ClosedContextBridge.java    |  81 +++
 .../javabridge/CompletedEvaluatorBridge.java    |  43 ++
 .../reef/javabridge/CompletedTaskBridge.java    |  40 +
 .../reef/javabridge/ContextMessageBridge.java   |  56 ++
 .../javabridge/EvaluatorRequestorBridge.java    |  76 ++
 .../reef/javabridge/FailedContextBridge.java    |  83 +++
 .../reef/javabridge/FailedEvaluatorBridge.java  |  47 ++
 .../reef/javabridge/FailedTaskBridge.java       |  60 ++
 .../reef/javabridge/HttpServerEventBridge.java  |  79 ++
 .../apache/reef/javabridge/InteropLogger.java   |  55 ++
 .../reef/javabridge/InteropReturnInfo.java      |  52 ++
 .../org/apache/reef/javabridge/JavaBridge.java  |  31 +
 .../org/apache/reef/javabridge/LibLoader.java   | 154 ++++
 .../apache/reef/javabridge/NativeBridge.java    |  32 +
 .../apache/reef/javabridge/NativeInterop.java   | 166 +++++
 .../reef/javabridge/RunningTaskBridge.java      |  49 ++
 .../reef/javabridge/SuspendedTaskBridge.java    |  54 ++
 .../reef/javabridge/TaskMessageBridge.java      |  36 +
 .../org/apache/reef/javabridge/Utilities.java   |  57 ++
 .../reef/javabridge/generic/JobClient.java      | 322 +++++++++
 .../reef/javabridge/generic/JobDriver.java      | 724 +++++++++++++++++++
 .../apache/reef/javabridge/generic/Launch.java  | 236 ++++++
 .../reef/javabridge/generic/LaunchHeadless.java | 100 +++
 .../reef/javabridge/generic/package-info.java   |  22 +
 .../util/logging/CLRBufferedLogHandler.java     | 167 +++++
 .../reef/util/logging/CLRLoggingConfig.java     |  31 +
 .../apache/reef/util/logging/package-info.java  |  22 +
 .../org/apache/reef/clr.logging.properties      |  82 +++
 lang/java/reef-bridge-project/.gitignore        |  34 -
 lang/java/reef-bridge-project/pom.xml           | 102 ---
 .../reef-bridge-project/reef-bridge-clr/pom.xml | 162 -----
 .../CSharp/CSharp/ClrHandler/ClrHandler.csproj  |  66 --
 .../ClrHandler/Properties/AssemblyInfo.cs       |  49 --
 .../externals/Org.Apache.Reef.Driver.dll        | Bin 121344 -> 0 bytes
 .../CSharp/ClrHandler/externals/msvcr110.dll    | Bin 849360 -> 0 bytes
 .../ClrHandler/interface/IInteropReturnInfo.cs  |  30 -
 .../CSharp/ClrHandler/interface/ILogger.cs      |  37 -
 .../JavaClrBridge/ActiveContextClr2Java.cpp     | 108 ---
 .../AllocatedEvaluatorClr2Java.cpp              | 166 -----
 .../CppBridge/JavaClrBridge/AssemblyInfo.cpp    |  50 --
 .../CppBridge/JavaClrBridge/AssemblyUtil.cpp    |  53 --
 .../Cpp/CppBridge/JavaClrBridge/BinaryUtil.cpp  | 102 ---
 .../Cpp/CppBridge/JavaClrBridge/BinaryUtil.h    |  26 -
 .../JavaClrBridge/ClosedContextClr2Java.cpp     |  88 ---
 .../CppBridge/JavaClrBridge/Clr2JavaImpl.cpp    |  44 --
 .../Cpp/CppBridge/JavaClrBridge/Clr2JavaImpl.h  | 222 ------
 .../CppBridge/JavaClrBridge/CommonUtilities.cpp |  53 --
 .../CompletedEvaluatorClr2Java.cpp              |  60 --
 .../JavaClrBridge/CompletedTaskClr2Java.cpp     |  71 --
 .../JavaClrBridge/ContextMessageClr2Java.cpp    |  78 --
 .../EvaluatorRequestorClr2Java.cpp              |  71 --
 .../JavaClrBridge/FailedContextClr2Java.cpp     |  96 ---
 .../JavaClrBridge/FailedEvaluatorClr2Java.cpp   |  74 --
 .../JavaClrBridge/FailedTaskClr2Java.cpp        |  81 ---
 .../JavaClrBridge/HttpServerClr2Java.cpp        | 137 ----
 .../CppBridge/JavaClrBridge/InteropAssemblies.h |  40 -
 .../CppBridge/JavaClrBridge/InteropLogger.cpp   |  50 --
 .../Cpp/CppBridge/JavaClrBridge/InteropLogger.h |  47 --
 .../JavaClrBridge/InteropReturnInfo.cpp         |  88 ---
 .../CppBridge/JavaClrBridge/InteropReturnInfo.h |  57 --
 .../Cpp/CppBridge/JavaClrBridge/InteropUtil.cpp | 129 ----
 .../Cpp/CppBridge/JavaClrBridge/InteropUtil.h   |  65 --
 .../CppBridge/JavaClrBridge/JavaClrBridge.cpp   | 492 -------------
 .../Cpp/CppBridge/JavaClrBridge/JavaClrBridge.h |  33 -
 .../CppBridge/JavaClrBridge/JavaClrBridge.sln   |  56 --
 .../JavaClrBridge/JavaClrBridge.vcxproj         | 173 -----
 .../JavaClrBridge/JavaClrBridge.vcxproj.filters | 104 ---
 .../CppBridge/JavaClrBridge/ManagedLogger.cpp   |  47 --
 .../main/Cpp/CppBridge/JavaClrBridge/ReadMe.txt |  57 --
 .../JavaClrBridge/RunningTaskClr2Java.cpp       |  92 ---
 .../JavaClrBridge/SuspendedTaskClr2Java.cpp     |  85 ---
 .../JavaClrBridge/TaskMessageClr2Java.cpp       |  60 --
 .../reef-bridge-java/pom.xml                    | 116 ---
 .../reef/javabridge/ActiveContextBridge.java    |  80 --
 .../javabridge/AllocatedEvaluatorBridge.java    | 141 ----
 .../reef/javabridge/ClosedContextBridge.java    |  81 ---
 .../javabridge/CompletedEvaluatorBridge.java    |  43 --
 .../reef/javabridge/CompletedTaskBridge.java    |  40 -
 .../reef/javabridge/ContextMessageBridge.java   |  56 --
 .../javabridge/EvaluatorRequestorBridge.java    |  76 --
 .../reef/javabridge/FailedContextBridge.java    |  83 ---
 .../reef/javabridge/FailedEvaluatorBridge.java  |  47 --
 .../reef/javabridge/FailedTaskBridge.java       |  60 --
 .../reef/javabridge/HttpServerEventBridge.java  |  79 --
 .../apache/reef/javabridge/InteropLogger.java   |  55 --
 .../reef/javabridge/InteropReturnInfo.java      |  52 --
 .../org/apache/reef/javabridge/JavaBridge.java  |  31 -
 .../org/apache/reef/javabridge/LibLoader.java   | 154 ----
 .../apache/reef/javabridge/NativeBridge.java    |  32 -
 .../apache/reef/javabridge/NativeInterop.java   | 166 -----
 .../reef/javabridge/RunningTaskBridge.java      |  49 --
 .../reef/javabridge/SuspendedTaskBridge.java    |  54 --
 .../reef/javabridge/TaskMessageBridge.java      |  36 -
 .../org/apache/reef/javabridge/Utilities.java   |  57 --
 .../reef/javabridge/generic/JobClient.java      | 322 ---------
 .../reef/javabridge/generic/JobDriver.java      | 724 -------------------
 .../apache/reef/javabridge/generic/Launch.java  | 236 ------
 .../reef/javabridge/generic/LaunchHeadless.java | 100 ---
 .../reef/javabridge/generic/package-info.java   |  22 -
 .../util/logging/CLRBufferedLogHandler.java     | 167 -----
 .../reef/util/logging/CLRLoggingConfig.java     |  31 -
 .../apache/reef/util/logging/package-info.java  |  22 -
 .../org/apache/reef/clr.logging.properties      |  82 ---
 .../reef-bridge-project/reef-bridge/pom.xml     | 111 ---
 lang/reef-bridge/pom.xml                        | 139 ++++
 pom.xml                                         |   6 +-
 153 files changed, 7050 insertions(+), 7142 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/22f651f8/lang/cpp/.gitignore
----------------------------------------------------------------------
diff --git a/lang/cpp/.gitignore b/lang/cpp/.gitignore
new file mode 100644
index 0000000..79dafb9
--- /dev/null
+++ b/lang/cpp/.gitignore
@@ -0,0 +1,8 @@
+**/*.sdf
+**/*.opensdf
+**/*.suo
+**/obj
+**/x64
+
+
+

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/22f651f8/lang/cpp/reef-bridge-clr/pom.xml
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/pom.xml b/lang/cpp/reef-bridge-clr/pom.xml
new file mode 100644
index 0000000..6e1e987
--- /dev/null
+++ b/lang/cpp/reef-bridge-clr/pom.xml
@@ -0,0 +1,168 @@
+<?xml version="1.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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>reef-bridge-clr</artifactId>
+    <name>REEF Bridge CLR</name>
+    <description>Bridge between JVM and CLR.</description>
+
+
+    <parent>
+        <groupId>org.apache.reef</groupId>
+        <artifactId>reef-project</artifactId>
+        <version>0.11.0-incubating-SNAPSHOT</version>
+        <relativePath>../../..</relativePath>
+    </parent>
+
+
+    <dependencies>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>reef-common</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>reef-runtime-local</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>reef-runtime-yarn</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>reef-io</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>reef-checkpoint</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>reef-dotnet</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>reef-bridge-java</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.avro</groupId>
+            <artifactId>avro</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <!-- Build files are frequently overwritten by Visual Studio -->
+                        <exclude>src/main/Cpp/CppBridge/JavaClrBridge/JavaClrBridge.sln</exclude>
+                        <exclude>src/main/Cpp/CppBridge/JavaClrBridge/JavaClrBridge.vcxproj</exclude>
+                        <exclude>src/main/Cpp/CppBridge/JavaClrBridge/JavaClrBridge.vcxproj.filters</exclude>
+                        <exclude>src/main/CSharp/CSharp/ClrHandler/ClrHandler.csproj</exclude>
+                        <!--End of Visual Studio build files-->
+                    </excludes>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    <profiles>
+        <profile>
+            <id>Bridge</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>exec-maven-plugin</artifactId>
+                        <configuration>
+                            <executable>msbuild.exe</executable>
+                        </configuration>
+                        <executions>
+                            <execution>
+                                <id>clean</id>
+                                <phase>clean</phase>
+                                <configuration>
+                                    <arguments>
+                                        <argument>
+                                            ${project.basedir}/src/main/Cpp/CppBridge/JavaClrBridge/JavaClrBridge.sln
+                                        </argument>
+                                        <argument>/p:Configuration="Release"</argument>
+                                        <argument>/p:Platform="x64"</argument>
+                                        <argument>/t:Clean</argument>
+                                    </arguments>
+                                </configuration>
+                                <goals>
+                                    <goal>exec</goal>
+                                </goals>
+                            </execution>
+                            <execution>
+                                <id>build</id>
+                                <phase>compile</phase>
+                                <configuration>
+                                    <arguments>
+                                        <argument>
+                                            ${project.basedir}/src/main/Cpp/CppBridge/JavaClrBridge/JavaClrBridge.sln
+                                        </argument>
+                                        <argument>/p:Configuration="Release"</argument>
+                                        <argument>/p:Platform="x64"</argument>
+                                    </arguments>
+                                </configuration>
+                                <goals>
+                                    <goal>exec</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <artifactId>maven-resources-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>copy-external-dlls</id>
+                                <phase>process-resources</phase>
+                                <goals>
+                                    <goal>copy-resources</goal>
+                                </goals>
+                                <configuration>
+                                    <overwrite>true</overwrite>
+                                    <outputDirectory>${basedir}/target/classes</outputDirectory>
+                                    <resources>
+                                        <resource>
+                                            <directory>src/main/CSharp/CSharp/ClrHandler/externals</directory>
+                                        </resource>
+                                    </resources>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/22f651f8/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/ClrHandler.csproj
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/ClrHandler.csproj b/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/ClrHandler.csproj
new file mode 100644
index 0000000..c3207c5
--- /dev/null
+++ b/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/ClrHandler.csproj
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{443A7B61-5C91-4F67-9FCD-81BC6FABFDBD}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>ClrHandler</RootNamespace>
+    <AssemblyName>ClrHandler</AssemblyName>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\..\..\..\target\classes\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\..\..\..\..\target\classes\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup>
+    <SignAssembly>false</SignAssembly>
+  </PropertyGroup>
+  <PropertyGroup>
+    <AssemblyOriginatorKeyFile>
+    </AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Org.Apache.Reef.Driver">
+      <HintPath>externals\Org.Apache.Reef.Driver</HintPath>
+      <Private>true</Private>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Runtime.Serialization" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="interface\ILogger.cs" />
+    <Compile Include="interface\IInteropReturnInfo.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/22f651f8/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/Properties/AssemblyInfo.cs
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/Properties/AssemblyInfo.cs b/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..5812e03
--- /dev/null
+++ b/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/Properties/AssemblyInfo.cs
@@ -0,0 +1,49 @@
+/**
+ * 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.
+ */
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+// 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: AssemblyTitle("ClrHandler")]
+[assembly: AssemblyDescription("The interface dll between CPP and CLR code")]
+[assembly: AssemblyProduct("ClrHandler")]
+[assembly: AssemblyCopyright("Copyright ©  2014")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("3efe4d3c-087b-4076-b331-8f3e36c10016")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/22f651f8/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/externals/Org.Apache.Reef.Driver.dll
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/externals/Org.Apache.Reef.Driver.dll b/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/externals/Org.Apache.Reef.Driver.dll
new file mode 100644
index 0000000..66da519
Binary files /dev/null and b/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/externals/Org.Apache.Reef.Driver.dll differ

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/22f651f8/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/externals/msvcr110.dll
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/externals/msvcr110.dll b/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/externals/msvcr110.dll
new file mode 100644
index 0000000..dd484a5
Binary files /dev/null and b/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/externals/msvcr110.dll differ

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/22f651f8/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/interface/IInteropReturnInfo.cs
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/interface/IInteropReturnInfo.cs b/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/interface/IInteropReturnInfo.cs
new file mode 100644
index 0000000..b3b930a
--- /dev/null
+++ b/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/interface/IInteropReturnInfo.cs
@@ -0,0 +1,30 @@
+/**
+ * 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.
+ */
+using System;
+
+namespace Microsoft.Reef.Interop
+{
+    public interface IInteropReturnInfo
+    {
+        void AddExceptionString(String exceptionString);       
+        Boolean HasExceptions();
+        void SetReturnCode(int rc);
+        int GetReturnCode();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/22f651f8/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/interface/ILogger.cs
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/interface/ILogger.cs b/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/interface/ILogger.cs
new file mode 100644
index 0000000..4a7f9b2
--- /dev/null
+++ b/lang/cpp/reef-bridge-clr/src/main/CSharp/CSharp/ClrHandler/interface/ILogger.cs
@@ -0,0 +1,37 @@
+/**
+ * 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.
+ */
+using System;
+
+namespace Microsoft.Reef.Interop
+{
+    public enum TraceLevel : int
+    {
+        NoTrace = Int32.MaxValue,
+
+        Error = 1000,
+        Warning = 900,
+        Info = 800,
+        Verbose = 300, 
+    }
+
+    public interface ILogger
+    {
+        void Log(TraceLevel traceLevel, String message);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/22f651f8/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/ActiveContextClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/ActiveContextClr2Java.cpp b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/ActiveContextClr2Java.cpp
new file mode 100644
index 0000000..c381f50
--- /dev/null
+++ b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/ActiveContextClr2Java.cpp
@@ -0,0 +1,108 @@
+/**
+ * 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 {
+					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/22f651f8/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/AllocatedEvaluatorClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/AllocatedEvaluatorClr2Java.cpp b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/AllocatedEvaluatorClr2Java.cpp
new file mode 100644
index 0000000..6f158bc
--- /dev/null
+++ b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/AllocatedEvaluatorClr2Java.cpp
@@ -0,0 +1,166 @@
+/**
+ * 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 {
+					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/22f651f8/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/AssemblyInfo.cpp
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/AssemblyInfo.cpp b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/AssemblyInfo.cpp
new file mode 100644
index 0000000..f6c3178
--- /dev/null
+++ b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/AssemblyInfo.cpp
@@ -0,0 +1,50 @@
+/**
+ * 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.
+ */
+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("JavaClrBridge")];
+[assembly:AssemblyProductAttribute("JavaClrBridge")];
+[assembly:AssemblyCopyrightAttribute("Copyright (c)  2014")];
+//
+// 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)];
+
+[assembly:SecurityPermission(SecurityAction::RequestMinimum, UnmanagedCode = true)];

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/22f651f8/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/AssemblyUtil.cpp
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/AssemblyUtil.cpp b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/AssemblyUtil.cpp
new file mode 100644
index 0000000..ce9239c
--- /dev/null
+++ b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/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/22f651f8/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/BinaryUtil.cpp
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/BinaryUtil.cpp b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/BinaryUtil.cpp
new file mode 100644
index 0000000..b7c3a2e
--- /dev/null
+++ b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/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/22f651f8/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/BinaryUtil.h
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/BinaryUtil.h b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/BinaryUtil.h
new file mode 100644
index 0000000..dc946a6
--- /dev/null
+++ b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/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/22f651f8/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/ClosedContextClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/ClosedContextClr2Java.cpp b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/ClosedContextClr2Java.cpp
new file mode 100644
index 0000000..a141f45
--- /dev/null
+++ b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/ClosedContextClr2Java.cpp
@@ -0,0 +1,88 @@
+/**
+ * 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 {
+					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/22f651f8/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/Clr2JavaImpl.cpp
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/Clr2JavaImpl.cpp b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/Clr2JavaImpl.cpp
new file mode 100644
index 0000000..ebd1aa4
--- /dev/null
+++ b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/Clr2JavaImpl.cpp
@@ -0,0 +1,44 @@
+/**
+ * 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 Microsoft
+{
+	namespace Reef
+	{
+		namespace Interop
+		{
+			Clr2JavaImpl::Clr2JavaImpl (JNIEnv* env, jobject  jobjectEManager, jobject  jobjectDriverManager)
+			{
+				_env = env;
+				_jobjectEManager = jobjectEManager;
+				_jclassEManager =  env->GetObjectClass (_jobjectEManager);
+				_jmidSubmit = env->GetMethodID(_jclassEManager, "submit", "([B)V");	
+				_jobjectDriverManager = jobjectDriverManager;
+				_jclassDriverManager = env->GetObjectClass (_jobjectDriverManager);
+
+			}
+
+			void Clr2JavaImpl::AllocatedEvaluatorSubmitContextAndTask(String^ contextConfigStr, String^ taskConfigStr)
+			{
+				Console::WriteLine("AllocatedEvaluatorSubmitContextAndTask not implemented for Clr2JavaImpl");
+			}
+		}
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/22f651f8/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/Clr2JavaImpl.h
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/Clr2JavaImpl.h b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/Clr2JavaImpl.h
new file mode 100644
index 0000000..41d6980
--- /dev/null
+++ b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/Clr2JavaImpl.h
@@ -0,0 +1,222 @@
+/**
+ * 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 "clrhandler.dll"
+#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 {
+					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/22f651f8/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/CommonUtilities.cpp
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/CommonUtilities.cpp b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/CommonUtilities.cpp
new file mode 100644
index 0000000..c668dab
--- /dev/null
+++ b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/CommonUtilities.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 "Clr2JavaImpl.h"
+
+namespace Org {
+  namespace Apache {
+		namespace Reef {
+			namespace Driver {
+				namespace Bridge {
+					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/22f651f8/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/CompletedEvaluatorClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/CompletedEvaluatorClr2Java.cpp b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/CompletedEvaluatorClr2Java.cpp
new file mode 100644
index 0000000..1bd9dbe
--- /dev/null
+++ b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/CompletedEvaluatorClr2Java.cpp
@@ -0,0 +1,60 @@
+/**
+ * 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 {
+					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/22f651f8/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/CompletedTaskClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/CompletedTaskClr2Java.cpp b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/CompletedTaskClr2Java.cpp
new file mode 100644
index 0000000..ef7d9c7
--- /dev/null
+++ b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/CompletedTaskClr2Java.cpp
@@ -0,0 +1,71 @@
+/**
+ * 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 {
+					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/22f651f8/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/ContextMessageClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/ContextMessageClr2Java.cpp b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/ContextMessageClr2Java.cpp
new file mode 100644
index 0000000..eda01f5
--- /dev/null
+++ b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/ContextMessageClr2Java.cpp
@@ -0,0 +1,78 @@
+/**
+ * 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 {
+					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/22f651f8/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/EvaluatorRequestorClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/EvaluatorRequestorClr2Java.cpp b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/EvaluatorRequestorClr2Java.cpp
new file mode 100644
index 0000000..610f2a4
--- /dev/null
+++ b/lang/cpp/reef-bridge-clr/src/main/Cpp/CppBridge/JavaClrBridge/EvaluatorRequestorClr2Java.cpp
@@ -0,0 +1,71 @@
+/**
+ * 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 {
+					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