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

incubator-reef git commit: [REEF-897] Interop Annotation in Java

Repository: incubator-reef
Updated Branches:
  refs/heads/master 5b65c73e9 -> 70331278f


[REEF-897] Interop Annotation in Java

This addressed the issue by
  * Added an Interop annotation.
  * Fixed up Java classes to be final.
  * Add Private annotations to Bridge Java classes.

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

Pull Request:
  This closes #608


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

Branch: refs/heads/master
Commit: 70331278ff71dcba5442bb4b9e5026a536bc8238
Parents: 5b65c73
Author: Andrew Chung <af...@gmail.com>
Authored: Sun Nov 1 11:26:04 2015 -0800
Committer: Markus Weimer <we...@apache.org>
Committed: Tue Nov 3 17:11:10 2015 -0800

----------------------------------------------------------------------
 .../reef/annotations/audience/Interop.java      | 39 ++++++++++++++++++++
 .../reef/javabridge/ActiveContextBridge.java    |  6 +++
 .../javabridge/AllocatedEvaluatorBridge.java    |  6 +++
 .../reef/javabridge/BridgeHandlerManager.java   |  2 +
 .../reef/javabridge/ClosedContextBridge.java    |  8 +++-
 .../javabridge/CompletedEvaluatorBridge.java    |  8 +++-
 .../reef/javabridge/CompletedTaskBridge.java    |  4 ++
 .../reef/javabridge/ContextMessageBridge.java   |  8 +++-
 .../reef/javabridge/DriverRestartedBridge.java  |  4 ++
 .../javabridge/EvaluatorRequestorBridge.java    |  6 +++
 .../reef/javabridge/FailedContextBridge.java    |  6 +++
 .../reef/javabridge/FailedEvaluatorBridge.java  |  6 ++-
 .../reef/javabridge/FailedTaskBridge.java       |  6 +++
 .../reef/javabridge/HttpServerEventBridge.java  |  7 ++++
 .../apache/reef/javabridge/InteropLogger.java   |  7 +++-
 .../reef/javabridge/InteropReturnInfo.java      |  7 +++-
 .../org/apache/reef/javabridge/JavaBridge.java  |  5 +++
 .../apache/reef/javabridge/NativeBridge.java    |  3 ++
 .../apache/reef/javabridge/NativeInterop.java   |  4 ++
 .../reef/javabridge/RunningTaskBridge.java      |  6 +++
 .../reef/javabridge/SuspendedTaskBridge.java    |  6 +++
 .../reef/javabridge/TaskMessageBridge.java      |  8 +++-
 .../org/apache/reef/javabridge/Utilities.java   |  4 ++
 23 files changed, 159 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/lang/java/reef-annotations/src/main/java/org/apache/reef/annotations/audience/Interop.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-annotations/src/main/java/org/apache/reef/annotations/audience/Interop.java b/lang/java/reef-annotations/src/main/java/org/apache/reef/annotations/audience/Interop.java
new file mode 100644
index 0000000..e26911d
--- /dev/null
+++ b/lang/java/reef-annotations/src/main/java/org/apache/reef/annotations/audience/Interop.java
@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+package org.apache.reef.annotations.audience;
+
+/**
+ * Indicates that a class, function, or instance variable is used
+ * at the Interop layer, and should not be modified or removed without
+ * testing, knowing its consequences, and making corresponding changes
+ * in C# and C++ code.
+ */
+public @interface Interop {
+  /**
+   * @return The C++ files related to the Interop class/function/instance variable.
+   * Note that the coverage may not be absolute.
+   */
+  String[] CppFiles() default "";
+
+  /**
+   * @return The C# files related to the interop class/function/instance variable.
+   * Note that the coverage may not be absolute.
+   */
+  String[] CsFiles() default "";
+}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/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 2c036d2..9558547 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
@@ -18,6 +18,8 @@
  */
 package org.apache.reef.javabridge;
 
+import org.apache.reef.annotations.audience.Interop;
+import org.apache.reef.annotations.audience.Private;
 import org.apache.reef.driver.context.ActiveContext;
 import org.apache.reef.io.naming.Identifiable;
 import org.apache.reef.runtime.common.driver.context.EvaluatorContext;
@@ -28,6 +30,10 @@ import java.util.logging.Logger;
 /**
  * The Java-CLR bridge object for {@link org.apache.reef.driver.context.ActiveContext}.
  */
+@Private
+@Interop(
+    CppFiles = { "Clr2JavaImpl.h", "ActiveContextClr2Java.cpp" },
+    CsFiles = { "IActiveContextClr2Java.cs", "ActiveContext.cs" })
 public final class ActiveContextBridge extends NativeBridge implements Identifiable {
   private static final Logger LOG = Logger.getLogger(ActiveContextBridge.class.getName());
 

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/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 f393666..9ac01f5 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
@@ -18,6 +18,8 @@
  */
 package org.apache.reef.javabridge;
 
+import org.apache.reef.annotations.audience.Interop;
+import org.apache.reef.annotations.audience.Private;
 import org.apache.reef.io.naming.Identifiable;
 import org.apache.reef.runtime.common.driver.evaluator.AllocatedEvaluatorImpl;
 import org.apache.reef.driver.evaluator.AllocatedEvaluator;
@@ -28,6 +30,10 @@ import java.util.logging.Logger;
 /**
  * The AllocatedEvaluatorBridge object to bridge operations between REEF .NET and Java allocated evaluator operations.
  */
+@Private
+@Interop(
+    CppFiles = { "Clr2JavaImpl.h", "AllocatedEvaluatorClr2Java.cpp" },
+    CsFiles = { "IAllocatedEvaluatorClr2Java.cs", "AllocatedEvaluator.cs" })
 public final class AllocatedEvaluatorBridge extends NativeBridge implements Identifiable {
 
   private static final Logger LOG = Logger.getLogger(AllocatedEvaluatorBridge.class.getName());

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/BridgeHandlerManager.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/BridgeHandlerManager.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/BridgeHandlerManager.java
index 1684e26..aa37b42 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/BridgeHandlerManager.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/BridgeHandlerManager.java
@@ -18,6 +18,7 @@
  */
 package org.apache.reef.javabridge;
 
+import org.apache.reef.annotations.audience.Interop;
 import org.apache.reef.annotations.audience.Private;
 
 /**
@@ -26,6 +27,7 @@ import org.apache.reef.annotations.audience.Private;
  * UNLESS YOU KNOW WHAT YOU ARE DOING!
  */
 @Private
+@Interop(CppFiles = { "JavaClrBridge.cpp" }, CsFiles = { "BridgeHandlerManager.cs" })
 public final class BridgeHandlerManager {
   private long allocatedEvaluatorHandler = 0;
   private long activeContextHandler = 0;

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/ClosedContextBridge.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/ClosedContextBridge.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/ClosedContextBridge.java
index c82c7a1..17f638c 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/ClosedContextBridge.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/ClosedContextBridge.java
@@ -18,6 +18,8 @@
  */
 package org.apache.reef.javabridge;
 
+import org.apache.reef.annotations.audience.Interop;
+import org.apache.reef.annotations.audience.Private;
 import org.apache.reef.driver.context.ActiveContext;
 import org.apache.reef.driver.context.ClosedContext;
 import org.apache.reef.driver.evaluator.EvaluatorDescriptor;
@@ -29,7 +31,11 @@ import java.util.logging.Logger;
 /**
  * The Java-CLR bridge object for {@link org.apache.reef.driver.context.ClosedContext}.
  */
-public class ClosedContextBridge extends NativeBridge implements ClosedContext {
+@Private
+@Interop(
+    CppFiles = { "Clr2JavaImpl.h", "ClosedContextClr2Java.cpp" },
+    CsFiles = { "IClosedContextClr2Java.cs", "ClosedContext.cs" })
+public final class ClosedContextBridge extends NativeBridge implements ClosedContext {
 
   private static final Logger LOG = Logger.getLogger(ClosedContextBridge.class.getName());
 

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/CompletedEvaluatorBridge.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/CompletedEvaluatorBridge.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/CompletedEvaluatorBridge.java
index 34cc569..9c5e1a1 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/CompletedEvaluatorBridge.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/CompletedEvaluatorBridge.java
@@ -18,13 +18,19 @@
  */
 package org.apache.reef.javabridge;
 
+import org.apache.reef.annotations.audience.Interop;
+import org.apache.reef.annotations.audience.Private;
 import org.apache.reef.driver.evaluator.CompletedEvaluator;
 import org.apache.reef.io.naming.Identifiable;
 
 /**
  * The Java-CLR bridge object for {@link org.apache.reef.driver.evaluator.CompletedEvaluator}.
  */
-public class CompletedEvaluatorBridge extends NativeBridge implements Identifiable {
+@Private
+@Interop(
+    CppFiles = { "Clr2JavaImpl.h", "CompletedEvaluatorClr2Java.cpp" },
+    CsFiles = { "ICompletedEvaluatorClr2Java.cs", "CompletedEvaluator.cs" })
+public final class CompletedEvaluatorBridge extends NativeBridge implements Identifiable {
 
   private final CompletedEvaluator jcompletedEvaluator;
 

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/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 c0680f9..c0578a8 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
@@ -18,6 +18,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.CompletedTask;
 import org.apache.reef.io.Message;
@@ -26,6 +27,9 @@ import org.apache.reef.io.Message;
  * The Java-CLR bridge object for {@link org.apache.reef.driver.task.CompletedTask}.
  */
 @Private
+@Interop(
+    CppFiles = { "Clr2JavaImpl.h", "CompletedTaskClr2Java.cpp" },
+    CsFiles = { "ICompletedTaskClr2Java.cs", "CompletedTask.cs" })
 public final class CompletedTaskBridge extends NativeBridge implements Message {
 
   /**

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/ContextMessageBridge.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/ContextMessageBridge.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/ContextMessageBridge.java
index 8b6ceb3..9cbdc86 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/ContextMessageBridge.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/ContextMessageBridge.java
@@ -18,12 +18,18 @@
  */
 package org.apache.reef.javabridge;
 
+import org.apache.reef.annotations.audience.Interop;
+import org.apache.reef.annotations.audience.Private;
 import org.apache.reef.driver.context.ContextMessage;
 
 /**
  * The Java-CLR bridge object for {@link org.apache.reef.driver.context.ContextMessage}.
  */
-public class ContextMessageBridge extends NativeBridge implements ContextMessage {
+@Private
+@Interop(
+    CppFiles = { "Clr2JavaImpl.h", "ContextMessageClr2Java.cpp" },
+    CsFiles = { "IContextMessageClr2Java.cs", "ContextMessage.cs" })
+public final class ContextMessageBridge extends NativeBridge implements ContextMessage {
 
   private ContextMessage jcontextMessage;
   private String contextMessageId;

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/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 5739a3e..7bdc526 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
@@ -20,6 +20,7 @@ package org.apache.reef.javabridge;
 
 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.DriverRestarted;
 
@@ -31,6 +32,9 @@ import java.util.Set;
 @Private
 @DriverSide
 @Unstable
+@Interop(
+    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;

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/EvaluatorRequestorBridge.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/EvaluatorRequestorBridge.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/EvaluatorRequestorBridge.java
index 34c3fbf..a046090 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/EvaluatorRequestorBridge.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/EvaluatorRequestorBridge.java
@@ -18,6 +18,8 @@
  */
 package org.apache.reef.javabridge;
 
+import org.apache.reef.annotations.audience.Interop;
+import org.apache.reef.annotations.audience.Private;
 import org.apache.reef.driver.evaluator.EvaluatorRequest;
 import org.apache.reef.driver.evaluator.EvaluatorRequestor;
 import org.apache.reef.util.logging.LoggingScope;
@@ -29,6 +31,10 @@ import java.util.logging.Logger;
 /**
  * The Java-CLR bridge object for {@link org.apache.reef.driver.evaluator.EvaluatorRequestor}.
  */
+@Private
+@Interop(
+    CppFiles = { "Clr2JavaImpl.h", "EvaluatorRequestorClr2Java.cpp" },
+    CsFiles = { "IEvaluatorRequestorClr2Java.cs", "EvaluatorRequestor.cs" })
 public final class EvaluatorRequestorBridge extends NativeBridge {
   private static final Logger LOG = Logger.getLogger(EvaluatorRequestorBridge.class.getName());
   private final boolean isBlocked;

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/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 f05c06a..e607a7a 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
@@ -18,6 +18,8 @@
  */
 package org.apache.reef.javabridge;
 
+import org.apache.reef.annotations.audience.Interop;
+import org.apache.reef.annotations.audience.Private;
 import org.apache.reef.driver.context.ActiveContext;
 import org.apache.reef.driver.context.ContextBase;
 import org.apache.reef.driver.context.FailedContext;
@@ -30,6 +32,10 @@ import java.util.logging.Logger;
 /**
  * The Java-CLR bridge object for {@link org.apache.reef.driver.context.FailedContext}.
  */
+@Private
+@Interop(
+    CppFiles = { "Clr2JavaImpl.h", "FailedContextClr2Java.cpp" },
+    CsFiles = { "IFailedContextClr2Java.cs", "FailedContext.cs" })
 public final class FailedContextBridge extends NativeBridge implements ContextBase {
 
   private static final Logger LOG = Logger.getLogger(FailedContextBridge.class.getName());

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/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 cb567c5..778964f 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
@@ -18,6 +18,8 @@
  */
 package org.apache.reef.javabridge;
 
+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.util.logging.LoggingScopeFactory;
@@ -27,7 +29,9 @@ import java.util.logging.Logger;
 /**
  * The Java-CLR bridge object for {@link org.apache.reef.driver.evaluator.FailedEvaluator}.
  */
-public class FailedEvaluatorBridge extends NativeBridge {
+@Private
+@Interop(CppFiles = { "FailedEvaluatorClr2Java.cpp" }, CsFiles = { "IFailedEvaluatorClr2Java", "FailedEvaluator" })
+public final class FailedEvaluatorBridge extends NativeBridge {
   private static final Logger LOG = Logger.getLogger(FailedEvaluatorBridge.class.getName());
   private FailedEvaluator jfailedEvaluator;
   private EvaluatorRequestorBridge evaluatorRequestorBridge;

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/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 21443a5..b31612a 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
@@ -18,6 +18,8 @@
  */
 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.FailedTask;
 
 import java.nio.charset.StandardCharsets;
@@ -27,6 +29,10 @@ import java.util.logging.Logger;
 /**
  * The Java-CLR bridge object for {@link org.apache.reef.driver.task.FailedTask}.
  */
+@Private
+@Interop(
+    CppFiles = { "Clr2JavaImpl.h", "FailedTaskClr2Java.cpp" },
+    CsFiles = { "IFailedTaskClr2Java.cs", "FailedTask.cs" })
 public final class FailedTaskBridge extends NativeBridge {
   private static final Logger LOG = Logger.getLogger(FailedTaskBridge.class.getName());
 

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/HttpServerEventBridge.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/HttpServerEventBridge.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/HttpServerEventBridge.java
index 7e21085..4752d81 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/HttpServerEventBridge.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/HttpServerEventBridge.java
@@ -18,9 +18,16 @@
  */
 package org.apache.reef.javabridge;
 
+import org.apache.reef.annotations.audience.Interop;
+import org.apache.reef.annotations.audience.Private;
+
 /**
  * The Java-CLR bridge object for http server events.
  */
+@Private
+@Interop(
+    CppFiles = { "Clr2JavaImpl.h",  "HttpServerClr2Java.cpp"},
+    CsFiles = { "IHttpServerBridgeClr2Java.cs", "HttpMessage.cs" })
 public final class HttpServerEventBridge extends NativeBridge {
   private String queryString;
   private byte[] queryRequestData;

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/InteropLogger.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/InteropLogger.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/InteropLogger.java
index 68be034..8ad33ef 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/InteropLogger.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/InteropLogger.java
@@ -18,6 +18,9 @@
  */
 package org.apache.reef.javabridge;
 
+import org.apache.reef.annotations.audience.Interop;
+import org.apache.reef.annotations.audience.Private;
+
 import java.util.HashMap;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -25,7 +28,9 @@ import java.util.logging.Logger;
 /**
  * Logger called from CLR code.
  */
-public class InteropLogger {
+@Private
+@Interop(CppFiles = { "JavaClrBridge.cpp", "InteropLogger.h", "InteropLogger.cpp" })
+public final class InteropLogger {
   private static final Logger LOG = Logger.getLogger("InteropLogger");
   private HashMap<Integer, Level> levelHashMap;
 

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/InteropReturnInfo.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/InteropReturnInfo.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/InteropReturnInfo.java
index de69b19..dc1baef 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/InteropReturnInfo.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/InteropReturnInfo.java
@@ -18,12 +18,17 @@
  */
 package org.apache.reef.javabridge;
 
+import org.apache.reef.annotations.audience.Interop;
+import org.apache.reef.annotations.audience.Private;
+
 import java.util.ArrayList;
 
 /**
  * Information about return codes/exceptions coming from bridge.
  */
-public class InteropReturnInfo {
+@Private
+@Interop(CppFiles = { "InteropReturnInfo.cpp", "InteropReturnInfo.cs"}, CsFiles = { "IInteropReturnInfo.cs" })
+public final class InteropReturnInfo {
 
   private int returnCode;
   private ArrayList<String> exceptionList = new ArrayList<>();

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/JavaBridge.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/JavaBridge.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/JavaBridge.java
index 4fb0b84..65c0a13 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/JavaBridge.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/JavaBridge.java
@@ -18,9 +18,14 @@
  */
 package org.apache.reef.javabridge;
 
+import org.apache.reef.annotations.audience.Interop;
+import org.apache.reef.annotations.audience.Private;
+
 /**
  * TODO[JIRA REEF-383] Document/Refactor JavaBridge.
  */
+@Private
+@Interop(CppFiles = "JavaClrBridge.cs")
 public class JavaBridge {
   private static final String CPP_BRIDGE = "JavaClrBridge";
 

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/NativeBridge.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/NativeBridge.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/NativeBridge.java
index 2046fd3..2cc0cf8 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/NativeBridge.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/NativeBridge.java
@@ -18,12 +18,15 @@
  */
 package org.apache.reef.javabridge;
 
+import org.apache.reef.annotations.audience.Private;
+
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
 /**
  * Abstract bridge class.
  */
+@Private
 public abstract class NativeBridge implements AutoCloseable {
 
   private static final Logger LOG = Logger.getLogger(NativeBridge.class.getName());

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/NativeInterop.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/NativeInterop.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/NativeInterop.java
index 32b10d0..6de53ef 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/NativeInterop.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/NativeInterop.java
@@ -18,12 +18,16 @@
  */
 package org.apache.reef.javabridge;
 
+import org.apache.reef.annotations.audience.Interop;
+import org.apache.reef.annotations.audience.Private;
 import org.apache.reef.javabridge.generic.DriverRestartCompletedBridge;
 
 /**
  * Java interfaces of CLR/Java bridge.
  * Implementations of the methods can be found at lang/cs/Org.Apache.REEF.Bridge/JavaClrBridge.cpp.
  */
+@Private
+@Interop(CppFiles = { "JavaClrBridge.h", "JavaClrBridge.cpp" })
 public final class NativeInterop {
   public static final String GLOBAL_LIBRARIES_FILENAME = "userSuppliedGlobalLibraries.txt";
 

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/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 aef8dc8..ed64ff9 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
@@ -18,6 +18,8 @@
  */
 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 java.util.logging.Logger;
@@ -25,6 +27,10 @@ import java.util.logging.Logger;
 /**
  * The Java-CLR bridge object for {@link org.apache.reef.driver.task.RunningTask}.
  */
+@Private
+@Interop(
+    CppFiles = { "Clr2JavaImpl.h", "RunningTaskClr2Java.cpp" },
+    CsFiles = { "IRunningTaskClr2Java.cs", "RunningTask.cs" })
 public final class RunningTaskBridge extends NativeBridge {
   private static final Logger LOG = Logger.getLogger(RunningTaskBridge.class.getName());
 

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/SuspendedTaskBridge.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/SuspendedTaskBridge.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/SuspendedTaskBridge.java
index 2360cf6..d585244 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/SuspendedTaskBridge.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/SuspendedTaskBridge.java
@@ -18,6 +18,8 @@
  */
 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.SuspendedTask;
 import org.apache.reef.io.Message;
 import org.apache.reef.io.naming.Identifiable;
@@ -25,6 +27,10 @@ import org.apache.reef.io.naming.Identifiable;
 /**
  * The Java-CLR bridge object for {@link org.apache.reef.driver.task.SuspendedTask}.
  */
+@Private
+@Interop(
+    CppFiles = { "Clr2JavaImpl.h", "SuspendedTaskClr2Java.cpp" },
+    CsFiles = { "ISuspendedTaskClr2Java.cs", "SuspendedTask.cs" })
 public final class SuspendedTaskBridge extends NativeBridge implements Identifiable, Message {
 
   private final SuspendedTask jsuspendedTask;

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/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 db23ee2..d6b1cdb 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
@@ -18,12 +18,18 @@
  */
 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;
 
 /**
  * The Java-CLR bridge object for {@link org.apache.reef.driver.task.TaskMessage}.
  */
-public class TaskMessageBridge extends NativeBridge {
+@Private
+@Interop(
+    CppFiles = { "Clr2JavaImpl.h", "TaskMessageClr2Java.cpp" },
+    CsFiles = { "ITaskMessageClr2Java.cs", "TaskMessage.cs" })
+public final class TaskMessageBridge extends NativeBridge {
   private TaskMessage jtaskMessage;
   private String taskId;
 

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/70331278/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/Utilities.java
----------------------------------------------------------------------
diff --git a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/Utilities.java b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/Utilities.java
index 2399101..1bfda31 100644
--- a/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/Utilities.java
+++ b/lang/java/reef-bridge-java/src/main/java/org/apache/reef/javabridge/Utilities.java
@@ -18,6 +18,8 @@
  */
 package org.apache.reef.javabridge;
 
+import org.apache.reef.annotations.audience.Interop;
+import org.apache.reef.annotations.audience.Private;
 import org.apache.reef.driver.evaluator.EvaluatorDescriptor;
 import org.apache.reef.tang.ClassHierarchy;
 import org.apache.reef.tang.implementation.protobuf.ProtocolBufferClassHierarchy;
@@ -34,6 +36,8 @@ import java.nio.file.Paths;
 /**
  * CLR/Java bridge utilities.
  */
+@Private
+@Interop
 public final class Utilities {
   public static ClassHierarchy loadClassHierarchy(final String classHierarchyFile) {
     // TODO[JIRA REEF-400] The file should be created via AvroClassHierarchySerializer