You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by go...@apache.org on 2019/08/02 18:35:12 UTC
[beam] branch master updated: [BEAM-7868] optionally skip hidden
pipeline options
This is an automated email from the ASF dual-hosted git repository.
goenka 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 2c8bf9f [BEAM-7868] optionally skip hidden pipeline options
new 47cf7ee Merge pull request #9211 from angoenka/hidden_options
2c8bf9f is described below
commit 2c8bf9fbfd66b9d57284c93f4ff76b4c223b5305
Author: Ankur Goenka <an...@gmail.com>
AuthorDate: Wed Jul 31 19:34:50 2019 -0700
[BEAM-7868] optionally skip hidden pipeline options
---
.../beam/sdk/options/PipelineOptionsFactory.java | 4 ++--
.../beam/sdk/options/PipelineOptionsReflector.java | 11 ++++++-----
.../sdk/options/PipelineOptionsReflectorTest.java | 20 ++++++++++++++------
3 files changed, 22 insertions(+), 13 deletions(-)
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/PipelineOptionsFactory.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/PipelineOptionsFactory.java
index 683b2c3..b887394 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/PipelineOptionsFactory.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/PipelineOptionsFactory.java
@@ -592,7 +592,7 @@ public class PipelineOptionsFactory {
checkNotNull(iface);
CACHE.get().validateWellFormed(iface);
- Set<PipelineOptionSpec> properties = PipelineOptionsReflector.getOptionSpecs(iface);
+ Set<PipelineOptionSpec> properties = PipelineOptionsReflector.getOptionSpecs(iface, true);
RowSortedTable<Class<?>, String, Method> ifacePropGetterTable =
TreeBasedTable.create(ClassNameComparator.INSTANCE, Ordering.natural());
@@ -661,7 +661,7 @@ public class PipelineOptionsFactory {
for (Class<? extends PipelineOptions> iface : ifaces) {
CACHE.get().validateWellFormed(iface);
- Set<PipelineOptionSpec> properties = PipelineOptionsReflector.getOptionSpecs(iface);
+ Set<PipelineOptionSpec> properties = PipelineOptionsReflector.getOptionSpecs(iface, false);
RowSortedTable<Class<?>, String, Method> ifacePropGetterTable =
TreeBasedTable.create(ClassNameComparator.INSTANCE, Ordering.natural());
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/PipelineOptionsReflector.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/PipelineOptionsReflector.java
index 78e2df4..5a9e9db 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/PipelineOptionsReflector.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/PipelineOptionsReflector.java
@@ -31,12 +31,13 @@ class PipelineOptionsReflector {
private PipelineOptionsReflector() {}
/**
- * Retrieve metadata for the full set of pipeline options visible within the type hierarchy of a
- * single {@link PipelineOptions} interface.
+ * Retrieve metadata for the full set of pipeline options within the type hierarchy of a single
+ * {@link PipelineOptions} interface with optional filtering {@link Hidden} options.
*
* @see PipelineOptionsReflector#getOptionSpecs(Iterable)
*/
- static Set<PipelineOptionSpec> getOptionSpecs(Class<? extends PipelineOptions> optionsInterface) {
+ static Set<PipelineOptionSpec> getOptionSpecs(
+ Class<? extends PipelineOptions> optionsInterface, boolean skipHidden) {
Iterable<Method> methods = ReflectHelpers.getClosureOfMethodsOnInterface(optionsInterface);
Multimap<String, Method> propsToGetters = getPropertyNamesToGetters(methods);
@@ -53,7 +54,7 @@ class PipelineOptionsReflector {
continue;
}
- if (declaringClass.isAnnotationPresent(Hidden.class)) {
+ if (skipHidden && declaringClass.isAnnotationPresent(Hidden.class)) {
continue;
}
@@ -77,7 +78,7 @@ class PipelineOptionsReflector {
Iterable<Class<? extends PipelineOptions>> optionsInterfaces) {
ImmutableSet.Builder<PipelineOptionSpec> setBuilder = ImmutableSet.builder();
for (Class<? extends PipelineOptions> optionsInterface : optionsInterfaces) {
- setBuilder.addAll(getOptionSpecs(optionsInterface));
+ setBuilder.addAll(getOptionSpecs(optionsInterface, true));
}
return setBuilder.build();
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/options/PipelineOptionsReflectorTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/options/PipelineOptionsReflectorTest.java
index 7eb103e..ba165cc 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/options/PipelineOptionsReflectorTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/options/PipelineOptionsReflectorTest.java
@@ -41,7 +41,7 @@ public class PipelineOptionsReflectorTest {
@Test
public void testGetOptionSpecs() throws NoSuchMethodException {
Set<PipelineOptionSpec> properties =
- PipelineOptionsReflector.getOptionSpecs(SimpleOptions.class);
+ PipelineOptionsReflector.getOptionSpecs(SimpleOptions.class, true);
assertThat(
properties,
@@ -60,7 +60,7 @@ public class PipelineOptionsReflectorTest {
@Test
public void testFiltersNonGetterMethods() {
Set<PipelineOptionSpec> properties =
- PipelineOptionsReflector.getOptionSpecs(OnlyTwoValidGetters.class);
+ PipelineOptionsReflector.getOptionSpecs(OnlyTwoValidGetters.class, true);
assertThat(properties, not(hasItem(hasName(isOneOf("misspelled", "hasParameter", "prefix")))));
}
@@ -91,7 +91,7 @@ public class PipelineOptionsReflectorTest {
@Test
public void testBaseClassOptions() {
Set<PipelineOptionSpec> props =
- PipelineOptionsReflector.getOptionSpecs(ExtendsSimpleOptions.class);
+ PipelineOptionsReflector.getOptionSpecs(ExtendsSimpleOptions.class, true);
assertThat(props, hasItem(allOf(hasName("foo"), hasClass(SimpleOptions.class))));
assertThat(props, hasItem(allOf(hasName("foo"), hasClass(ExtendsSimpleOptions.class))));
@@ -114,7 +114,7 @@ public class PipelineOptionsReflectorTest {
@Test
public void testExcludesNonPipelineOptionsMethods() {
Set<PipelineOptionSpec> properties =
- PipelineOptionsReflector.getOptionSpecs(ExtendsNonPipelineOptions.class);
+ PipelineOptionsReflector.getOptionSpecs(ExtendsNonPipelineOptions.class, true);
assertThat(properties, not(hasItem(hasName("foo"))));
}
@@ -132,11 +132,19 @@ public class PipelineOptionsReflectorTest {
@Test
public void testExcludesHiddenInterfaces() {
Set<PipelineOptionSpec> properties =
- PipelineOptionsReflector.getOptionSpecs(HiddenOptions.class);
+ PipelineOptionsReflector.getOptionSpecs(HiddenOptions.class, true);
assertThat(properties, not(hasItem(hasName("foo"))));
}
+ @Test
+ public void testIncludesHiddenInterfaces() {
+ Set<PipelineOptionSpec> properties =
+ PipelineOptionsReflector.getOptionSpecs(HiddenOptions.class, false);
+
+ assertThat(properties, hasItem(hasName("foo")));
+ }
+
/** Test interface. */
@Hidden
public interface HiddenOptions extends PipelineOptions {
@@ -148,7 +156,7 @@ public class PipelineOptionsReflectorTest {
@Test
public void testShouldSerialize() {
Set<PipelineOptionSpec> properties =
- PipelineOptionsReflector.getOptionSpecs(JsonIgnoreOptions.class);
+ PipelineOptionsReflector.getOptionSpecs(JsonIgnoreOptions.class, true);
assertThat(properties, hasItem(allOf(hasName("notIgnored"), shouldSerialize())));
assertThat(properties, hasItem(allOf(hasName("ignored"), not(shouldSerialize()))));