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

pabloem pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git


The following commit(s) were added to refs/heads/master by this push:
     new 75fcb72  [BEAM-2492] Have PipelineOptions DisplayData filter out 
attributes marked with Hidden
     new 7c1b9e4c Merge pull request #14970 from [BEAM-2492] Have 
PipelineOptions DisplayData filter out attributes marked with 
@org.apache.beam.sdk.options.Hidden
75fcb72 is described below

commit 75fcb72857ebd78141fca4d5964f93cf1fd3b188
Author: yzhang559 <[email protected]>
AuthorDate: Tue Jun 8 11:46:12 2021 -0700

    [BEAM-2492] Have PipelineOptions DisplayData filter out attributes marked 
with Hidden
---
 .../apache/beam/sdk/options/ProxyInvocationHandler.java |  8 ++++++++
 .../beam/sdk/options/ProxyInvocationHandlerTest.java    | 17 +++++++++++++++++
 2 files changed, 25 insertions(+)

diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ProxyInvocationHandler.java
 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ProxyInvocationHandler.java
index 9d7a11e..97f673a 100644
--- 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ProxyInvocationHandler.java
+++ 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ProxyInvocationHandler.java
@@ -324,6 +324,10 @@ class ProxyInvocationHandler implements InvocationHandler, 
Serializable {
             continue;
           }
 
+          if (optionSpec.getGetterMethod().isAnnotationPresent(Hidden.class)) {
+            continue;
+          }
+
           builder.add(
               DisplayData.item(option.getKey(), resolved.getType(), 
resolved.getValue())
                   .withNamespace(optionSpec.getDefiningInterface()));
@@ -350,6 +354,10 @@ class ProxyInvocationHandler implements InvocationHandler, 
Serializable {
             continue;
           }
 
+          if (spec.getGetterMethod().isAnnotationPresent(Hidden.class)) {
+            continue;
+          }
+
           Object value = getValueFromJson(jsonOption.getKey(), 
spec.getGetterMethod());
           DisplayDataValue resolved = DisplayDataValue.resolve(value);
           builder.add(
diff --git 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/options/ProxyInvocationHandlerTest.java
 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/options/ProxyInvocationHandlerTest.java
index bb07587..b590b00 100644
--- 
a/sdks/java/core/src/test/java/org/apache/beam/sdk/options/ProxyInvocationHandlerTest.java
+++ 
b/sdks/java/core/src/test/java/org/apache/beam/sdk/options/ProxyInvocationHandlerTest.java
@@ -995,6 +995,23 @@ public class ProxyInvocationHandlerTest {
   }
 
   @Test
+  public void testDisplayDataExcludesHiddenValues() {
+    HasHidden options = PipelineOptionsFactory.as(HasHidden.class);
+    options.setFoo("bar");
+
+    DisplayData data = DisplayData.from(options);
+    assertThat(data, not(hasDisplayItem("foo")));
+  }
+
+  /** Test interface. */
+  public interface HasHidden extends PipelineOptions {
+    @Hidden
+    String getFoo();
+
+    void setFoo(String value);
+  }
+
+  @Test
   public void testDisplayDataIncludesExplicitlySetDefaults() {
     HasDefaults options = PipelineOptionsFactory.as(HasDefaults.class);
     String defaultValue = options.getFoo();

Reply via email to