/** Returns the property name associated with this provider. */ public String propertyName() { if (value instanceof RuntimeValueProvider) { return ((RuntimeValueProvider) value).propertyName(); } else if (value instanceof NestedValueProvider) { return ((NestedValueProvider) value).propertyName(); } else { throw new RuntimeException( "Only a RuntimeValueProvider or a NestedValueProvider can supply" + " a property name."); } }
stepContext.addInput( PropertyNames.PUBSUB_TOPIC_OVERRIDE, ((NestedValueProvider) overriddenTransform.getTopicProvider()).propertyName()); stepContext.addInput( PropertyNames.PUBSUB_SUBSCRIPTION_OVERRIDE, ((NestedValueProvider) overriddenTransform.getSubscriptionProvider()).propertyName());
stepContext.addInput( PropertyNames.PUBSUB_TOPIC_OVERRIDE, ((NestedValueProvider) overriddenTransform.getTopicProvider()).propertyName());
@Test public void testNestedValueProviderRuntime() throws Exception { TestOptions options = PipelineOptionsFactory.as(TestOptions.class); ValueProvider<String> rvp = options.getBar(); ValueProvider<String> nvp = NestedValueProvider.of(rvp, from -> from + "bar"); ValueProvider<String> doubleNvp = NestedValueProvider.of(nvp, from -> from); assertEquals("bar", ((NestedValueProvider) nvp).propertyName()); assertEquals("bar", ((NestedValueProvider) doubleNvp).propertyName()); assertFalse(nvp.isAccessible()); expectedException.expect(RuntimeException.class); expectedException.expectMessage("Value only available at runtime"); nvp.get(); }