Repository: reef Updated Branches: refs/heads/master 1137cdee0 -> 76cea200c
[REEF-760] Populate ActiveContext.ParentId JIRA: [REEF-760](https://issues.apache.org/jira/browse/REEF-760) Pull Request: This closes #836 Project: http://git-wip-us.apache.org/repos/asf/reef/repo Commit: http://git-wip-us.apache.org/repos/asf/reef/commit/76cea200 Tree: http://git-wip-us.apache.org/repos/asf/reef/tree/76cea200 Diff: http://git-wip-us.apache.org/repos/asf/reef/diff/76cea200 Branch: refs/heads/master Commit: 76cea200c5714449a8a5e2168f03669161048b76 Parents: 1137cde Author: Andrew Chung <[email protected]> Authored: Wed Feb 10 10:39:32 2016 -0800 Committer: Dongjoon Hyun <[email protected]> Committed: Wed Feb 10 12:32:06 2016 -0800 ---------------------------------------------------------------------- lang/cs/Org.Apache.REEF.Bridge/ActiveContextClr2Java.cpp | 7 +++++++ lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h | 2 ++ .../Bridge/Clr2java/IActiveContextClr2Java.cs | 2 ++ lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ActiveContext.cs | 5 +++-- .../Functional/Bridge/TestContextStack.cs | 5 +++++ .../java/org/apache/reef/javabridge/ActiveContextBridge.java | 7 +++++++ 6 files changed, 26 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/reef/blob/76cea200/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 f5e6bcf..51ff432 100644 --- a/lang/cs/Org.Apache.REEF.Bridge/ActiveContextClr2Java.cpp +++ b/lang/cs/Org.Apache.REEF.Bridge/ActiveContextClr2Java.cpp @@ -40,6 +40,8 @@ namespace Org { jclass jclassActiveContext = env->GetObjectClass(_jobjectActiveContext); jmethodID jmidGetContextId = env->GetMethodID(jclassActiveContext, "getContextId", "()Ljava/lang/String;"); _jstringId = CommonUtilities::CallGetMethodNewGlobalRef<jstring>(env, _jobjectActiveContext, jmidGetContextId); + jmethodID jmidGetParentContextId = env->GetMethodID(jclassActiveContext, "getParentContextId", "()Ljava/lang/String;"); + _jstringParentId = CommonUtilities::CallGetMethodNewGlobalRef<jstring>(env, _jobjectActiveContext, jmidGetParentContextId); _jstringEvaluatorId = CommonUtilities::GetJObjectEvaluatorId(env, _jobjectActiveContext, jclassActiveContext); ManagedLog::LOGGER->LogStop("ActiveContextClr2Java::ActiveContextClr2Java"); @@ -119,6 +121,11 @@ namespace Org { ManagedLog::LOGGER->LogStop("ActiveContextClr2Java::Close"); } + String^ ActiveContextClr2Java::GetParentId() { + JNIEnv *env = RetrieveEnv(_jvm); + return ManagedStringFromJavaString(env, _jstringParentId); + } + String^ ActiveContextClr2Java::GetId() { JNIEnv *env = RetrieveEnv(_jvm); return ManagedStringFromJavaString(env, _jstringId); http://git-wip-us.apache.org/repos/asf/reef/blob/76cea200/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 97dca5c..bfb04ab 100644 --- a/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h +++ b/lang/cs/Org.Apache.REEF.Bridge/Clr2JavaImpl.h @@ -76,6 +76,7 @@ namespace Org { public ref class ActiveContextClr2Java : public IActiveContextClr2Java { jobject _jobjectActiveContext = NULL; jstring _jstringId = NULL; + jstring _jstringParentId = NULL; jstring _jstringEvaluatorId = NULL; JavaVM* _jvm; public: @@ -86,6 +87,7 @@ namespace Org { virtual void SubmitContext(String^ contextConfigStr); virtual void Close(); virtual void OnError(String^ message); + virtual String^ GetParentId(); virtual String^ GetId(); virtual String^ GetEvaluatorId(); virtual IEvaluatorDescriptor^ GetEvaluatorDescriptor(); http://git-wip-us.apache.org/repos/asf/reef/blob/76cea200/lang/cs/Org.Apache.REEF.Driver/Bridge/Clr2java/IActiveContextClr2Java.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Driver/Bridge/Clr2java/IActiveContextClr2Java.cs b/lang/cs/Org.Apache.REEF.Driver/Bridge/Clr2java/IActiveContextClr2Java.cs index 8319585..119b110 100644 --- a/lang/cs/Org.Apache.REEF.Driver/Bridge/Clr2java/IActiveContextClr2Java.cs +++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/Clr2java/IActiveContextClr2Java.cs @@ -31,6 +31,8 @@ namespace Org.Apache.REEF.Driver.Bridge.Clr2java string GetId(); + string GetParentId(); + string GetEvaluatorId(); IEvaluatorDescriptor GetEvaluatorDescriptor(); http://git-wip-us.apache.org/repos/asf/reef/blob/76cea200/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ActiveContext.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ActiveContext.cs b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ActiveContext.cs index b96b238..8c0af97 100644 --- a/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ActiveContext.cs +++ b/lang/cs/Org.Apache.REEF.Driver/Bridge/Events/ActiveContext.cs @@ -32,12 +32,14 @@ namespace Org.Apache.REEF.Driver.Bridge.Events { private static readonly Logger Logger = Logger.GetLogger(typeof(ActiveContext)); private readonly AvroConfigurationSerializer _serializer; + private readonly Optional<string> _parentId; internal ActiveContext(IActiveContextClr2Java clr2Java) { InstanceId = Guid.NewGuid().ToString("N"); Clr2Java = clr2Java; _serializer = new AvroConfigurationSerializer(); + _parentId = Optional<string>.OfNullable(clr2Java.GetParentId()); } [DataMember] @@ -57,8 +59,7 @@ namespace Org.Apache.REEF.Driver.Bridge.Events public Optional<string> ParentId { - // TODO[REEF-760]: Implement - get { return Optional<string>.Empty(); } + get { return _parentId; } } public IEvaluatorDescriptor EvaluatorDescriptor http://git-wip-us.apache.org/repos/asf/reef/blob/76cea200/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestContextStack.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestContextStack.cs b/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestContextStack.cs index 50e3c91..273718c 100644 --- a/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestContextStack.cs +++ b/lang/cs/Org.Apache.REEF.Tests/Functional/Bridge/TestContextStack.cs @@ -122,9 +122,14 @@ namespace Org.Apache.REEF.Tests.Functional.Bridge GenericType<InjectableInterfaceImpl>.Class) .Build(); + Assert.False(value.ParentId.IsPresent()); + value.SubmitContext(Configurations.Merge(stackingContextConfig, contextConfig)); break; case ContextTwoId: + Assert.True(value.ParentId.IsPresent()); + Assert.Equal(value.ParentId.Value, ContextOneId); + value.SubmitTask( TaskConfiguration.ConfigurationModule.Set(TaskConfiguration.Identifier, "contextStackTestTask") .Set(TaskConfiguration.Task, GenericType<TestContextStackTask>.Class) http://git-wip-us.apache.org/repos/asf/reef/blob/76cea200/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 84637f8..3fb82f2 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 @@ -56,6 +56,13 @@ public final class ActiveContextBridge extends NativeBridge implements Identifia } /** + * @return the context ID of the parent. + */ + public String getParentContextId() { + return jactiveContext.getParentId().get(); + } + + /** * @return the Evaluator ID of the Evaluator on which the Context runs. */ public String getEvaluatorId() {
