You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@reef.apache.org by do...@apache.org on 2015/12/02 13:36:55 UTC

reef git commit: [REEF-986] Switch all InterOp calls to call public get methods in Java instead of referencing private fields

Repository: reef
Updated Branches:
  refs/heads/master 2f152db51 -> 848cf9298


[REEF-986] Switch all InterOp calls to call public get methods in Java instead of referencing private fields

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

Pull request:
  This closes #669


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

Branch: refs/heads/master
Commit: 848cf92980c2e0cc8942551a3228176a1afaed94
Parents: 2f152db
Author: Andrew Chung <af...@gmail.com>
Authored: Fri Nov 20 16:46:34 2015 -0800
Committer: Dongjoon Hyun <do...@apache.org>
Committed: Wed Dec 2 21:31:35 2015 +0900

----------------------------------------------------------------------
 .../ActiveContextClr2Java.cpp                   | 10 +---
 .../AllocatedEvaluatorClr2Java.cpp              |  7 +--
 .../ClosedContextClr2Java.cpp                   | 36 ++++++------
 lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h   | 16 +++++-
 .../Org.Apache.REEF.Bridge/CommonUtilities.cpp  | 60 ++++++++++----------
 .../CompletedEvaluatorClr2Java.cpp              |  3 +-
 .../CompletedTaskClr2Java.cpp                   |  8 +--
 .../ContextMessageClr2Java.cpp                  | 11 ++--
 .../DriverRestartCompletedClr2Java.cpp          |  4 +-
 .../DriverRestartedClr2Java.cpp                 |  8 +--
 .../FailedContextClr2Java.cpp                   | 14 ++---
 .../FailedEvaluatorClr2Java.cpp                 |  7 +--
 .../FailedTaskClr2Java.cpp                      |  4 +-
 .../RunningTaskClr2Java.cpp                     |  8 +--
 .../SuspendedTaskClr2Java.cpp                   |  7 +--
 .../TaskMessageClr2Java.cpp                     |  3 +-
 .../reef/javabridge/ActiveContextBridge.java    | 14 +++++
 .../javabridge/AllocatedEvaluatorBridge.java    |  7 +++
 .../reef/javabridge/CompletedTaskBridge.java    |  8 +++
 .../reef/javabridge/DriverRestartedBridge.java  |  1 -
 .../reef/javabridge/FailedContextBridge.java    |  7 +++
 .../reef/javabridge/FailedEvaluatorBridge.java  | 12 +++-
 .../reef/javabridge/FailedTaskBridge.java       |  4 ++
 .../reef/javabridge/RunningTaskBridge.java      | 16 ++++--
 .../reef/javabridge/TaskMessageBridge.java      |  8 ++-
 .../generic/DriverRestartCompletedBridge.java   |  4 +-
 26 files changed, 172 insertions(+), 115 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/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
index 605e01c..84f82e0 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/ActiveContextClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/ActiveContextClr2Java.cpp
@@ -39,13 +39,9 @@ namespace Org {
 							_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));
+							jmethodID jmidGetContextId = env->GetMethodID(jclassActiveContext, "getContextId", "()Ljava/lang/String;");
+							_jstringId = CommonUtilities::CallGetMethodNewGlobalRef<jstring>(env, _jobjectActiveContext, jmidGetContextId);
+							_jstringEvaluatorId = CommonUtilities::GetJObjectEvaluatorId(env, _jobjectActiveContext, jclassActiveContext);
 
 							ManagedLog::LOGGER->LogStop("ActiveContextClr2Java::ActiveContextClr2Java");
 						}

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/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
index 4dabd96..b23fb43 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/AllocatedEvaluatorClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/AllocatedEvaluatorClr2Java.cpp
@@ -42,11 +42,10 @@ namespace Org {
 						  _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)));
+						  _jstringId = CommonUtilities::GetJObjectId(env, _jobjectAllocatedEvaluator, jclassAllocatedEvaluator);
 
-						  jfieldID jidNameServerInfo = env->GetFieldID(jclassAllocatedEvaluator, "nameServerInfo", "Ljava/lang/String;");
-						  _jstringNameServerInfo = reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectAllocatedEvaluator, jidNameServerInfo)));
+						  jmethodID jmidGetNameServerInfo = env->GetMethodID(jclassAllocatedEvaluator, "getNameServerInfo", "()Ljava/lang/String;");
+						  _jstringNameServerInfo = CommonUtilities::CallGetMethodNewGlobalRef<jstring>(env, _jobjectAllocatedEvaluator, jmidGetNameServerInfo);
 
 						  ManagedLog::LOGGER->LogStop("AllocatedEvaluatorClr2Java::AllocatedEvaluatorClr2Java");
 					  }

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/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
index b1ea160..70f6ca2 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/ClosedContextClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/ClosedContextClr2Java.cpp
@@ -40,38 +40,36 @@ namespace Org {
                             _jobjectClosedContext = reinterpret_cast<jobject>(env->NewGlobalRef(jobjectClosedContext));
                             jclass jclassClosedContext = env->GetObjectClass(_jobjectClosedContext);
 
-                            // Gets the Java fields in order to get the field values from the actual Java objects of the field.
-                            // TODO[JIRA REEF-986]: Switch to get method call.
-                            jfieldID jidContextId = env->GetFieldID(jclassClosedContext, "contextId", "Ljava/lang/String;");
-                            jfieldID jidEvaluatorId = env->GetFieldID(jclassClosedContext, "evaluatorId", "Ljava/lang/String;");
-
                             // Gets the Context ID and Evaluator ID of the closed context from the Java closed context object.
-                            _jstringContextId = reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectClosedContext, jidContextId)));
-                            _jstringEvaluatorId = reinterpret_cast<jstring>(env->NewGlobalRef(env->GetObjectField(_jobjectClosedContext, jidEvaluatorId)));
+                            _jstringContextId = CommonUtilities::GetJObjectId(env, _jobjectClosedContext, jclassClosedContext);
+                            _jstringEvaluatorId = CommonUtilities::GetJObjectEvaluatorId(env, _jobjectClosedContext, jclassClosedContext);
 
                             ManagedLog::LOGGER->LogStop("ClosedContextClr2Java::ClosedContextClr2Java");
                         }
 
                         /**
-                          Gets the Parent context of the closed context through a JNI call to Java.
-                          */
+                         * Gets the Parent context of the closed context through a JNI call to Java.
+                         */
                         IActiveContextClr2Java^ ClosedContextClr2Java::GetParentContext() {
                             ManagedLog::LOGGER->LogStart("ClosedContextClr2Java::GetParentContext");
 
                             JNIEnv *env = RetrieveEnv(_jvm);
-
-                            // TODO[JIRA REEF-986]: Switch to get method call.
                             jclass jclassClosedContext = env->GetObjectClass(_jobjectClosedContext);
-                            jfieldID jidParentContext = env->GetFieldID(jclassClosedContext, "parentContext", "Lorg/apache/reef/javabridge/ActiveContextBridge;");
-                            jobject jobjectParentContext = env->GetObjectField(_jobjectClosedContext, jidParentContext);
+                            jmethodID jmidGetParentContext = env->GetMethodID(jclassClosedContext, "getParentContext", "()Lorg/apache/reef/javabridge/ActiveContextBridge;");
+                            if (jmidGetParentContext == NULL) {
+                                ManagedLog::LOGGER->Log("jmidGetParentContext is NULL");
+                                return nullptr;
+                            }
+
+                            jobject jobjectParentContext = CommonUtilities::CallGetMethodNewGlobalRef<jobject>(env, _jobjectClosedContext, jmidGetParentContext);
                             ManagedLog::LOGGER->LogStop("ClosedContextClr2Java::GetParentContext");
 
                             return gcnew ActiveContextClr2Java(env, jobjectParentContext);
                         }
 
                         /**
-                          Gets the ID of the closed context from Java.
-                          */
+                         * Gets the ID of the closed context from Java.
+                         */
                         String^ ClosedContextClr2Java::GetId() {
                             ManagedLog::LOGGER->Log("ClosedContextClr2Java::GetId");
                             JNIEnv *env = RetrieveEnv(_jvm);
@@ -79,8 +77,8 @@ namespace Org {
                         }
 
                         /**
-                          Gets the Evaluator ID of the Evaluator on which the Closed Context was active.
-                          */
+                         * Gets the Evaluator ID of the Evaluator on which the Closed Context was active.
+                         */
                         String^ ClosedContextClr2Java::GetEvaluatorId() {
                             ManagedLog::LOGGER->Log("ClosedContextClr2Java::GetEvaluatorId");
                             JNIEnv *env = RetrieveEnv(_jvm);
@@ -88,8 +86,8 @@ namespace Org {
                         }
 
                         /**
-                          Gets the EvaluatorDescriptor of the Evaluator on which the Closed Context was active.
-                          */
+                         * Gets the EvaluatorDescriptor of the Evaluator on which the Closed Context was active.
+                         */
                         IEvaluatorDescriptor^ ClosedContextClr2Java::GetEvaluatorDescriptor() {
                             ManagedLog::LOGGER->LogStart("ClosedContextClr2Java::GetEvaluatorDescriptor");
                             return CommonUtilities::RetrieveEvaluatorDescriptor(_jobjectClosedContext, _jvm);

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/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
index aa3a0e3..b4bdf69 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h
+++ b/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h
@@ -39,6 +39,19 @@ namespace Org {
                         public ref class CommonUtilities {
                         public:
                             static IEvaluatorDescriptor^ RetrieveEvaluatorDescriptor(jobject object, JavaVM* jvm);
+                            template<typename T> static T CallGetMethodNewGlobalRef(JNIEnv* env, jobject obj, jmethodID jmid) {
+                                return reinterpret_cast<T>(env->NewGlobalRef(env->CallObjectMethod(obj, jmid)));
+                            }
+
+                            static jstring GetJObjectId(JNIEnv* env, jobject obj, jclass javaClass) {
+                                jmethodID jmid = env->GetMethodID(javaClass, "getId", "()Ljava/lang/String;");
+                                return CommonUtilities::CallGetMethodNewGlobalRef<jstring>(env, obj, jmid);
+                            };
+
+                            static jstring GetJObjectEvaluatorId(JNIEnv* env, jobject obj, jclass javaClass) {
+                                jmethodID jmid = env->GetMethodID(javaClass, "getEvaluatorId", "()Ljava/lang/String;");
+                                return CommonUtilities::CallGetMethodNewGlobalRef<jstring>(env, obj, jmid);
+                            };
                         };
 
                         public ref class AllocatedEvaluatorClr2Java : public IAllocatedEvaluaotrClr2Java {
@@ -174,9 +187,6 @@ namespace Org {
                             virtual String^ GetId();
                         };
 
-                        /**
-                          See IClosedContextClr2Java.
-                          */
                         public ref class ClosedContextClr2Java : public IClosedContextClr2Java {
                             jobject  _jobjectClosedContext;
                             JavaVM* _jvm;

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/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
index 5de6e75..6dfc7b5 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/CommonUtilities.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/CommonUtilities.cpp
@@ -19,37 +19,37 @@
 #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");
-					  };
+    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;");
+                        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");
+                            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);
-					  }
-				  }
-			  }
-		  }
-	  }
-  }
+                            return gcnew EvaluatorDescriptorImpl(evaluatorDescriptorString);
+                        }
+                    }
+                }
+            }
+        }
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/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
index c961881..6c09826 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/CompletedEvaluatorClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/CompletedEvaluatorClr2Java.cpp
@@ -38,8 +38,7 @@ namespace Org {
 						  _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)));
+						  _jstringId = CommonUtilities::GetJObjectId(env, _jobjectCompletedEvaluator, jclassCompletedEvaluator);
 						  ManagedLog::LOGGER->LogStop("CompletedEvaluatorClr2Java::CompletedEvaluatorClr2Java");
 					  }
 

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/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
index 18e088d..50f1b42 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/CompletedTaskClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/CompletedTaskClr2Java.cpp
@@ -38,8 +38,8 @@ namespace Org {
 						  _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)));
+						  jmethodID jmidGetTaskId = env->GetMethodID(jclassCompletedTask, "getTaskId", "()Ljava/lang/String;");
+						  _jstringId = CommonUtilities::CallGetMethodNewGlobalRef<jstring>(env, _jobjectCompletedTask, jmidGetTaskId);
 						  ManagedLog::LOGGER->LogStop("CompletedTaskClr2Java::CompletedTaskClr2Java");
 					  }
 
@@ -54,8 +54,8 @@ namespace Org {
 						  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);
+						  jmethodID jmidGetActiveContext = env->GetMethodID(jclassCompletedTask, "getActiveContext", "()Lorg/apache/reef/javabridge/ActiveContextBridge;");
+						  jobject jobjectActiveContext = env->CallObjectMethod(_jobjectCompletedTask, jmidGetActiveContext);
 						  ManagedLog::LOGGER->LogStop("CompletedTaskClr2Java::GetActiveContext");
 						  return gcnew ActiveContextClr2Java(env, jobjectActiveContext);
 					  }

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/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
index c385e46..18ff378 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/ContextMessageClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/ContextMessageClr2Java.cpp
@@ -38,13 +38,12 @@ namespace Org {
 						  _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");
+						  jmethodID jmidGetSourceId = env->GetMethodID(jclassContextMessage, "getMessageSourceId", "()Ljava/lang/String;");
+						  jmethodID jmidGetMessage = env->GetMethodID(jclassContextMessage, "get", "()[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)));
+						  _jstringId = CommonUtilities::GetJObjectId(env, _jobjectContextMessage, jclassContextMessage);
+						  _jstringSourceId = CommonUtilities::CallGetMethodNewGlobalRef<jstring>(env, _jobjectContextMessage, jmidGetSourceId);
+						  _jarrayMessage = CommonUtilities::CallGetMethodNewGlobalRef<jbyteArray>(env, _jobjectContextMessage, jmidGetMessage);
 
 						  ManagedLog::LOGGER->LogStop("ContextMessageClr2Java::ContextMessageClr2Java");
 					  }

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/lang/cs/Org.Apache.REEF.Bridge/DriverRestartCompletedClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/DriverRestartCompletedClr2Java.cpp b/lang/cs/Org.Apache.REEF.Bridge/DriverRestartCompletedClr2Java.cpp
index f462a73..1e9a521 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/DriverRestartCompletedClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/DriverRestartCompletedClr2Java.cpp
@@ -38,9 +38,9 @@ namespace Org {
 							_jobjectDriverRestartCompleted = reinterpret_cast<jobject>(env->NewGlobalRef(jdriverRestartCompleted));
 
 							jclass jclassDriverRestartCompleted = env->GetObjectClass(_jobjectDriverRestartCompleted);
-							jfieldID jidIsTimedOut = env->GetFieldID(jclassDriverRestartCompleted, "isTimedOut", "Z");
+							jmethodID jmidIsTimedOut = env->GetMethodID(jclassDriverRestartCompleted, "isTimedOut", "()Z");
 
-							jboolean jisTimedOut = env->GetBooleanField(_jobjectDriverRestartCompleted, jidIsTimedOut);
+							jboolean jisTimedOut = env->CallBooleanMethod(_jobjectDriverRestartCompleted, jmidIsTimedOut);
 							_restartCompletedTime = System::DateTime::Now;
 							_isTimedOut = ClrBoolFromJavaBoolean(env, jisTimedOut);
 

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/lang/cs/Org.Apache.REEF.Bridge/DriverRestartedClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/DriverRestartedClr2Java.cpp b/lang/cs/Org.Apache.REEF.Bridge/DriverRestartedClr2Java.cpp
index 05b6af2..efb30d9 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/DriverRestartedClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/DriverRestartedClr2Java.cpp
@@ -38,11 +38,11 @@ namespace Org {
 							_jobjectDriverRestarted = reinterpret_cast<jobject>(env->NewGlobalRef(jdriverRestarted));
 
 							jclass jclassDriverRestarted = env->GetObjectClass(_jobjectDriverRestarted);
-							jfieldID jidExpectedEvaluatorIds = env->GetFieldID(jclassDriverRestarted, "expectedEvaluatorIds", "[Ljava/lang/String;");
-							jfieldID jidResubmissionAttempts = env->GetFieldID(jclassDriverRestarted, "resubmissionAttempts", "I");
+							jmethodID jmidGetExpectedEvaluatorIds = env->GetMethodID(jclassDriverRestarted, "getExpectedEvaluatorIds", "()[Ljava/lang/String;");
+							jmethodID jmidGetResubmissionAttempts = env->GetMethodID(jclassDriverRestarted, "getResubmissionAttempts", "()I");
 
-							_resubmissionAttempts = env->GetIntField(_jobjectDriverRestarted, jidResubmissionAttempts);
-							jobjectArray jevaluatorIds = reinterpret_cast<jobjectArray>(env->NewGlobalRef(env->GetObjectField(_jobjectDriverRestarted, jidExpectedEvaluatorIds)));
+							_resubmissionAttempts = env->CallIntMethod(_jobjectDriverRestarted, jmidGetResubmissionAttempts);
+							jobjectArray jevaluatorIds = CommonUtilities::CallGetMethodNewGlobalRef<jobjectArray>(env, _jobjectDriverRestarted, jmidGetExpectedEvaluatorIds);
 							_startTime = System::DateTime::Now;
 							int count = env->GetArrayLength(jevaluatorIds);
 							_expectedEvaluatorIds = gcnew array<String^>(count);

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/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
index 5a96202..9b26bbb 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/FailedContextClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/FailedContextClr2Java.cpp
@@ -38,13 +38,11 @@ namespace Org {
 						  _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;");
+						  jmethodID jmidGetParentId = env->GetMethodID(jclassFailedContext, "getParentId", "()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)));
+						  _jstringContextId = CommonUtilities::GetJObjectId(env, jobjectFailedContext, jclassFailedContext);
+						  _jstringEvaluatorId = CommonUtilities::GetJObjectEvaluatorId(env, jobjectFailedContext, jclassFailedContext);
+						  _jstringParentContextId = reinterpret_cast<jstring>(env->NewGlobalRef(env->CallObjectMethod(_jobjectFailedContext, jmidGetParentId)));
 
 						  ManagedLog::LOGGER->LogStop("FailedContextClr2Java::FailedContextClr2Java");
 					  }
@@ -55,8 +53,8 @@ namespace Org {
 						  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);
+						  jmethodID jmidGetParentContext = env->GetMethodID(jclassFailedContext, "getParentContext", "()Lorg/apache/reef/javabridge/ActiveContextBridge;");
+						  jobject jobjectParentContext = env->CallObjectMethod(_jobjectFailedContext, jmidGetParentContext);
 						  ManagedLog::LOGGER->LogStop("FailedContextClr2Java::GetParentContext");
 
 						  return gcnew ActiveContextClr2Java(env, jobjectParentContext);

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/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
index 615e09f..afccbbe 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/FailedEvaluatorClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/FailedEvaluatorClr2Java.cpp
@@ -40,8 +40,7 @@ namespace Org {
 						  _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)));
+						  _jstringId = CommonUtilities::GetJObjectId(env, _jobjectFailedEvaluator, jclassFailedEvaluator);
 						  ManagedLog::LOGGER->LogStop("FailedEvaluatorClr2Java::FailedEvaluatorClr2Java");
 					  }
 
@@ -50,8 +49,8 @@ namespace Org {
 						  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);
+						  jmethodID jmidGetEvaluatorRequestor = env->GetMethodID(jclassFailedEvaluator, "getEvaluatorRequestorBridge", "()Lorg/apache/reef/javabridge/EvaluatorRequestorBridge;");
+						  jobject jobjectEvaluatorRequestor = env->CallObjectMethod(_jobjectFailedEvaluator, jmidGetEvaluatorRequestor);
 						  ManagedLog::LOGGER->LogStop("FailedEvaluatorClr2Java::GetEvaluatorRequestor");
 						  return gcnew EvaluatorRequestorClr2Java(env, jobjectEvaluatorRequestor);
 					  }

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/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
index b27b13d..b6e2be2 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/FailedTaskClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/FailedTaskClr2Java.cpp
@@ -45,8 +45,8 @@ namespace Org {
 						  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);
+						  jmethodID jmidGetActiveContext = env->GetMethodID(jclassFailedTask, "getActiveContext", "()Lorg/apache/reef/javabridge/ActiveContextBridge;");
+						  jobject jobjectActiveContext = env->CallObjectMethod(_jobjectFailedTask, jmidGetActiveContext);
 
 						  ManagedLog::LOGGER->LogStop("FailedTaskClr2Java::GetActiveContext");
 						  return gcnew ActiveContextClr2Java(env, jobjectActiveContext);

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/lang/cs/Org.Apache.REEF.Bridge/RunningTaskClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/RunningTaskClr2Java.cpp b/lang/cs/Org.Apache.REEF.Bridge/RunningTaskClr2Java.cpp
index dfc8ae3..362715b 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/RunningTaskClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/RunningTaskClr2Java.cpp
@@ -38,9 +38,7 @@ namespace Org {
 						  _jobjectRunningTask = reinterpret_cast<jobject>(env->NewGlobalRef(jobjectRunningTask));
 
 						  jclass jclassRunningTask = env->GetObjectClass(_jobjectRunningTask);
-						  jmethodID jmidGetId = env->GetMethodID(jclassRunningTask, "getId", "()Ljava/lang/String;");
-
-						  _jstringId = reinterpret_cast<jstring>(env->NewGlobalRef(env->CallObjectMethod(_jobjectRunningTask, jmidGetId)));
+						  _jstringId = CommonUtilities::GetJObjectId(env, _jobjectRunningTask, jclassRunningTask);
 						  ManagedLog::LOGGER->LogStop("RunningTaskClr2Java::RunningTaskClr2Java");
 					  }
 
@@ -50,8 +48,8 @@ namespace Org {
 						  JNIEnv *env = RetrieveEnv(_jvm);
 
 						  jclass jclassRunningTask = env->GetObjectClass(_jobjectRunningTask);
-						  jfieldID jidActiveContext = env->GetFieldID(jclassRunningTask, "jactiveContext", "Lorg/apache/reef/javabridge/ActiveContextBridge;");
-						  jobject jobjectActiveContext = env->GetObjectField(_jobjectRunningTask, jidActiveContext);
+						  jmethodID jmidGetActiveContext = env->GetMethodID(jclassRunningTask, "getActiveContext", "()Lorg/apache/reef/javabridge/ActiveContextBridge;");
+						  jobject jobjectActiveContext = env->CallObjectMethod(_jobjectRunningTask, jmidGetActiveContext);
 						  ManagedLog::LOGGER->LogStop("RunningTaskClr2Java::GetActiveContext");
 
 						  return gcnew ActiveContextClr2Java(env, jobjectActiveContext);

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/lang/cs/Org.Apache.REEF.Bridge/SuspendedTaskClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/SuspendedTaskClr2Java.cpp b/lang/cs/Org.Apache.REEF.Bridge/SuspendedTaskClr2Java.cpp
index e052d24..059b594 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/SuspendedTaskClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/SuspendedTaskClr2Java.cpp
@@ -38,8 +38,7 @@ namespace Org {
 						  _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)));
+						  _jstringId = CommonUtilities::GetJObjectId(env, _jobjectSuspendedTask, jclassSuspendedTask);
 						  ManagedLog::LOGGER->LogStop("SuspendedTaskClr2Java::SuspendedTaskClr2Java");
 					  }
 
@@ -48,8 +47,8 @@ namespace Org {
 						  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);
+						  jmethodID jmidGetActiveContext = env->GetMethodID(jclassSuspendedTask, "getActiveContext", "()Lorg/apache/reef/javabridge/ActiveContextBridge;");
+						  jobject jobjectActiveContext = env->CallObjectMethod(_jobjectSuspendedTask, jmidGetActiveContext);
 						  ManagedLog::LOGGER->LogStop("SuspendedTaskClr2Java::GetActiveContext");
 						  return gcnew ActiveContextClr2Java(env, jobjectActiveContext);
 					  }

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/lang/cs/Org.Apache.REEF.Bridge/TaskMessageClr2Java.cpp
----------------------------------------------------------------------
diff --git a/lang/cs/Org.Apache.REEF.Bridge/TaskMessageClr2Java.cpp b/lang/cs/Org.Apache.REEF.Bridge/TaskMessageClr2Java.cpp
index 1ee79e9..1fa3cec 100644
--- a/lang/cs/Org.Apache.REEF.Bridge/TaskMessageClr2Java.cpp
+++ b/lang/cs/Org.Apache.REEF.Bridge/TaskMessageClr2Java.cpp
@@ -38,8 +38,7 @@ namespace Org {
 						  _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)));
+						  _jstringId = CommonUtilities::GetJObjectId(env, _jobjectTaskMessage, jclassTaskMessage);
 						  ManagedLog::LOGGER->LogStop("TaskMessageClr2Java::TaskMessageClr2Java");
 					  }
 

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/ActiveContextBridge.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/ActiveContextBridge.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/ActiveContextBridge.java
index 9558547..7d068f8 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/ActiveContextBridge.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/ActiveContextBridge.java
@@ -47,6 +47,20 @@ public final class ActiveContextBridge extends NativeBridge implements Identifia
     this.evaluatorId = activeContext.getEvaluatorId();
   }
 
+  /**
+   * @return the context ID.
+   */
+  public String getContextId() {
+    return contextId;
+  }
+
+  /**
+   * @return the Evaluator ID of the Evaluator on which the Context runs.
+   */
+  public String getEvaluatorId() {
+    return evaluatorId;
+  }
+
   public void submitTaskString(final String taskConfigurationString) {
     if (taskConfigurationString.isEmpty()) {
       throw new RuntimeException("empty taskConfigurationString provided.");

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/AllocatedEvaluatorBridge.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/AllocatedEvaluatorBridge.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/AllocatedEvaluatorBridge.java
index 9ac01f5..d7281f1 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/AllocatedEvaluatorBridge.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/AllocatedEvaluatorBridge.java
@@ -147,6 +147,13 @@ public final class AllocatedEvaluatorBridge extends NativeBridge implements Iden
   }
 
   /**
+   * @return the nameServerInfo string.
+   */
+  public String getNameServerInfo() {
+    return nameServerInfo;
+  }
+
+  /**
    * @return the evaluator id.
    */
   @Override

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/CompletedTaskBridge.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/CompletedTaskBridge.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/CompletedTaskBridge.java
index c0578a8..ee1493a 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/CompletedTaskBridge.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/CompletedTaskBridge.java
@@ -45,6 +45,14 @@ public final class CompletedTaskBridge extends NativeBridge implements Message {
     jactiveContext = factory.getActiveContextBridge(completedTask.getActiveContext());
   }
 
+  public String getTaskId() {
+    return taskId;
+  }
+
+  public ActiveContextBridge getActiveContext() {
+    return jactiveContext;
+  }
+
   @Override
   public void close() {
   }

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/DriverRestartedBridge.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/DriverRestartedBridge.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/DriverRestartedBridge.java
index 7bdc526..19a8079 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/DriverRestartedBridge.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/DriverRestartedBridge.java
@@ -36,7 +36,6 @@ import java.util.Set;
     CppFiles = { "Clr2JavaImpl.h", "DriverRestartedClr2Java.cpp" },
     CsFiles = { "IDriverRestartedClr2Java.cs", "DriverRestarted.cs" })
 public final class DriverRestartedBridge extends NativeBridge {
-  // Used by bridge to extract field. Please take this into consideration when changing the name of the field.
   private final String[] expectedEvaluatorIds;
   private final int resubmissionAttempts;
 

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/FailedContextBridge.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/FailedContextBridge.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/FailedContextBridge.java
index e607a7a..f17caf3 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/FailedContextBridge.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/FailedContextBridge.java
@@ -87,6 +87,13 @@ public final class FailedContextBridge extends NativeBridge implements ContextBa
     return evaluatorDescriptor;
   }
 
+  /**
+   * @return the parent {@link ActiveContextBridge}.
+   */
+  public ActiveContextBridge getParentContext() {
+    return parentContext;
+  }
+
   public String getEvaluatorDescriptorSring() {
     final String descriptorString = Utilities.getEvaluatorDescriptorString(evaluatorDescriptor);
     LOG.log(Level.INFO, "Failed Context - serialized evaluator descriptor: " + descriptorString);

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/FailedEvaluatorBridge.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/FailedEvaluatorBridge.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/FailedEvaluatorBridge.java
index 778964f..22b8491 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/FailedEvaluatorBridge.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/FailedEvaluatorBridge.java
@@ -22,6 +22,7 @@ import org.apache.reef.annotations.audience.Interop;
 import org.apache.reef.annotations.audience.Private;
 import org.apache.reef.driver.evaluator.EvaluatorRequestor;
 import org.apache.reef.driver.evaluator.FailedEvaluator;
+import org.apache.reef.io.naming.Identifiable;
 import org.apache.reef.util.logging.LoggingScopeFactory;
 
 import java.util.logging.Logger;
@@ -31,7 +32,7 @@ import java.util.logging.Logger;
  */
 @Private
 @Interop(CppFiles = { "FailedEvaluatorClr2Java.cpp" }, CsFiles = { "IFailedEvaluatorClr2Java", "FailedEvaluator" })
-public final class FailedEvaluatorBridge extends NativeBridge {
+public final class FailedEvaluatorBridge extends NativeBridge implements Identifiable {
   private static final Logger LOG = Logger.getLogger(FailedEvaluatorBridge.class.getName());
   private FailedEvaluator jfailedEvaluator;
   private EvaluatorRequestorBridge evaluatorRequestorBridge;
@@ -51,8 +52,17 @@ public final class FailedEvaluatorBridge extends NativeBridge {
     return evaluatorRequestorBridge.getEvaluatorNumber();
   }
 
+  public EvaluatorRequestorBridge getEvaluatorRequestorBridge() {
+    return evaluatorRequestorBridge;
+  }
+
   @Override
   public void close() {
   }
+
+  @Override
+  public String getId() {
+    return evaluatorId;
+  }
 }
 

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/FailedTaskBridge.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/FailedTaskBridge.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/FailedTaskBridge.java
index b31612a..d80d6df 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/FailedTaskBridge.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/FailedTaskBridge.java
@@ -48,6 +48,10 @@ public final class FailedTaskBridge extends NativeBridge {
     }
   }
 
+  public ActiveContextBridge getActiveContext() {
+    return jactiveContext;
+  }
+
   public String getFailedTaskString() {
     final String description = jfailedTask.getDescription().isPresent() ?
         jfailedTask.getDescription().get().replace("=", "").replace(",", "") : "";

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/RunningTaskBridge.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/RunningTaskBridge.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/RunningTaskBridge.java
index ed64ff9..cae86c4 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/RunningTaskBridge.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/RunningTaskBridge.java
@@ -21,6 +21,7 @@ package org.apache.reef.javabridge;
 import org.apache.reef.annotations.audience.Interop;
 import org.apache.reef.annotations.audience.Private;
 import org.apache.reef.driver.task.RunningTask;
+import org.apache.reef.io.naming.Identifiable;
 
 import java.util.logging.Logger;
 
@@ -31,7 +32,7 @@ import java.util.logging.Logger;
 @Interop(
     CppFiles = { "Clr2JavaImpl.h", "RunningTaskClr2Java.cpp" },
     CsFiles = { "IRunningTaskClr2Java.cs", "RunningTask.cs" })
-public final class RunningTaskBridge extends NativeBridge {
+public final class RunningTaskBridge extends NativeBridge implements Identifiable {
   private static final Logger LOG = Logger.getLogger(RunningTaskBridge.class.getName());
 
   private final RunningTask jrunningTask;
@@ -42,14 +43,19 @@ public final class RunningTaskBridge extends NativeBridge {
     this.jactiveContext = factory.getActiveContextBridge(runningTask.getActiveContext());
   }
 
-  public String getId() {
-    return jrunningTask.getId();
-  }
-
   public void send(final byte[] message) {
     jrunningTask.send(message);
   }
 
+  public ActiveContextBridge getActiveContext() {
+    return jactiveContext;
+  }
+
+  @Override
+  public String getId() {
+    return jrunningTask.getId();
+  }
+
   @Override
   public void close() {
   }

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/TaskMessageBridge.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/TaskMessageBridge.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/TaskMessageBridge.java
index d6b1cdb..dd688b4 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/TaskMessageBridge.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/TaskMessageBridge.java
@@ -21,6 +21,7 @@ package org.apache.reef.javabridge;
 import org.apache.reef.annotations.audience.Interop;
 import org.apache.reef.annotations.audience.Private;
 import org.apache.reef.driver.task.TaskMessage;
+import org.apache.reef.io.naming.Identifiable;
 
 /**
  * The Java-CLR bridge object for {@link org.apache.reef.driver.task.TaskMessage}.
@@ -29,7 +30,7 @@ import org.apache.reef.driver.task.TaskMessage;
 @Interop(
     CppFiles = { "Clr2JavaImpl.h", "TaskMessageClr2Java.cpp" },
     CsFiles = { "ITaskMessageClr2Java.cs", "TaskMessage.cs" })
-public final class TaskMessageBridge extends NativeBridge {
+public final class TaskMessageBridge extends NativeBridge implements Identifiable {
   private TaskMessage jtaskMessage;
   private String taskId;
 
@@ -42,4 +43,9 @@ public final class TaskMessageBridge extends NativeBridge {
   @Override
   public void close() {
   }
+
+  @Override
+  public String getId() {
+    return taskId;
+  }
 }

http://git-wip-us.apache.org/repos/asf/reef/blob/848cf929/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/generic/DriverRestartCompletedBridge.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/generic/DriverRestartCompletedBridge.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/generic/DriverRestartCompletedBridge.java
index 2d03735..a476ec9 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/generic/DriverRestartCompletedBridge.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/generic/DriverRestartCompletedBridge.java
@@ -20,6 +20,7 @@ package org.apache.reef.javabridge.generic;
 
 import org.apache.reef.annotations.Unstable;
 import org.apache.reef.annotations.audience.DriverSide;
+import org.apache.reef.annotations.audience.Interop;
 import org.apache.reef.annotations.audience.Private;
 import org.apache.reef.driver.restart.DriverRestartCompleted;
 import org.apache.reef.javabridge.NativeBridge;
@@ -30,8 +31,9 @@ import org.apache.reef.javabridge.NativeBridge;
 @Private
 @DriverSide
 @Unstable
+@Interop(CppFiles = { "Clr2JavaImpl.h", "DriverRestartCompletedClr2Java.cpp" },
+    CsFiles = { "IDriverRestartCompletedClr2Java.cs", "DriverRestartCompleted.cs" })
 public final class DriverRestartCompletedBridge extends NativeBridge {
-  // Used by bridge to extract field. Please take this into consideration when changing the name of the field.
   private boolean isTimedOut;
 
   DriverRestartCompletedBridge(final DriverRestartCompleted driverRestartCompleted) {