You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@heron.apache.org by nw...@apache.org on 2018/12/27 20:29:02 UTC

[incubator-heron] branch master updated: Refactor StreamletShadow class to be more general (#3134)

This is an automated email from the ASF dual-hosted git repository.

nwang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-heron.git


The following commit(s) were added to refs/heads/master by this push:
     new b42f5dc  Refactor StreamletShadow class to be more general (#3134)
b42f5dc is described below

commit b42f5dcdd5a457bff06f41b1c0720704dcf3d264
Author: Ning Wang <nw...@twitter.com>
AuthorDate: Thu Dec 27 12:28:56 2018 -0800

    Refactor StreamletShadow class to be more general (#3134)
---
 .../java/org/apache/heron/streamlet/impl/StreamletImpl.java |  9 ++++++---
 .../org/apache/heron/streamlet/impl/StreamletShadow.java    | 13 +------------
 .../apache/heron/streamlet/impl/StreamletShadowTest.java    | 13 ++++++++++---
 3 files changed, 17 insertions(+), 18 deletions(-)

diff --git a/heron/api/src/java/org/apache/heron/streamlet/impl/StreamletImpl.java b/heron/api/src/java/org/apache/heron/streamlet/impl/StreamletImpl.java
index c05c654..3afa549 100644
--- a/heron/api/src/java/org/apache/heron/streamlet/impl/StreamletImpl.java
+++ b/heron/api/src/java/org/apache/heron/streamlet/impl/StreamletImpl.java
@@ -231,9 +231,12 @@ public abstract class StreamletImpl<R> implements Streamlet<R> {
 
     Set<String> availableIds = getAvailableStreamIds();
     if (availableIds.contains(streamId)) {
-      StreamletShadow<R> shadow = new StreamletShadow<R>(this);
-      shadow.setStreamId(streamId);
-      return shadow;
+      return new StreamletShadow<R>(this) {
+        @Override
+        public String getStreamId() {
+          return streamId;
+        }
+      };
     } else {
       throw new RuntimeException(
           String.format("Stream id %s is not available in %s. Available ids are: %s.",
diff --git a/heron/api/src/java/org/apache/heron/streamlet/impl/StreamletShadow.java b/heron/api/src/java/org/apache/heron/streamlet/impl/StreamletShadow.java
index 56d0c64..fad23de 100644
--- a/heron/api/src/java/org/apache/heron/streamlet/impl/StreamletShadow.java
+++ b/heron/api/src/java/org/apache/heron/streamlet/impl/StreamletShadow.java
@@ -53,20 +53,9 @@ import org.apache.heron.streamlet.impl.StreamletImpl;
  */
 public class StreamletShadow<R> extends StreamletImpl<R> {
   private StreamletImpl<R> real;
-  // Extra properties for a Streamlet object
-  protected String streamId;
 
   public StreamletShadow(StreamletImpl<R> real) {
     this.real = real;
-    this.streamId = real.getStreamId();
-  }
-
-  /**
-   * Sets the stream id of this Streamlet.
-   * @param streamId the stream id for this streamlet.
-   */
-  public void setStreamId(String streamId) {
-    this.streamId = streamId;
   }
 
   /**
@@ -75,7 +64,7 @@ public class StreamletShadow<R> extends StreamletImpl<R> {
    */
   @Override
   public String getStreamId() {
-    return streamId;
+    return real.getStreamId();
   }
 
   /*
diff --git a/heron/api/tests/java/org/apache/heron/streamlet/impl/StreamletShadowTest.java b/heron/api/tests/java/org/apache/heron/streamlet/impl/StreamletShadowTest.java
index 4cc70d2..fbbd803 100644
--- a/heron/api/tests/java/org/apache/heron/streamlet/impl/StreamletShadowTest.java
+++ b/heron/api/tests/java/org/apache/heron/streamlet/impl/StreamletShadowTest.java
@@ -56,13 +56,20 @@ public class StreamletShadowTest {
     assertEquals(shadow.getStreamId(), "real_stream");
 
     // set a different stream id
-    shadow.setStreamId("shadow_stream");
+    StreamletShadow<Double> shadow2 = new StreamletShadow(mockReal) {
+      @Override
+      public String getStreamId() {
+        return "shadow_stream";
+      }
+    };
+    assertEquals(shadow.getName(), "real_name");
+    assertEquals(shadow.getNumPartitions(), 1);
     assertEquals(shadow.getStreamId(), "shadow_stream");
 
     // addChild call should be forwarded to the real object
     verify(mockReal, never()).addChild(mockChild);
     shadow.addChild(mockChild);
-    verify(mockReal, times(1)).addChild(mockChild);
+    shadow2.addChild(mockChild);
+    verify(mockReal, times(2)).addChild(mockChild);
   }
-
 }