@Override public T fromCloudObject(CloudObject cloudObject) { return InstanceBuilder.ofType(coderClass).fromFactoryMethod("of").build(); }
@Override public IterableLikeCoder<?, ?> fromCloudObject(CloudObject cloudObject) { List<Coder<?>> elemCoderList = getComponents(cloudObject); checkArgument( elemCoderList.size() == 1, "Expected 1 component for %s, got %s", cloudObject.getClassName(), elemCoderList.size()); return InstanceBuilder.ofType(clazz) .fromFactoryMethod("of") .withArg(Coder.class, elemCoderList.get(0)) .build(); }
public static <T extends Coder> CloudObjectTranslator<T> atomic(final Class<T> coderClass) { // Make sure that the instance will be instantiable from the class. InstanceBuilder.ofType(coderClass).fromFactoryMethod("of").build(); return new CloudObjectTranslator<T>() { @Override public CloudObject toCloudObject(T target, SdkComponents sdkComponents) { return CloudObject.forClass(coderClass); } @Override public T fromCloudObject(CloudObject cloudObject) { return InstanceBuilder.ofType(coderClass).fromFactoryMethod("of").build(); } @Override public Class<? extends T> getSupportedClass() { return coderClass; } @Override public String cloudObjectClassName() { return CloudObject.forClass(coderClass).getClassName(); } }; }
jobServerDriver = InstanceBuilder.ofType(jobServerDriverClass) .fromFactoryMethod("fromParams") .withArg(String[].class, parameters) .build();
@Override public Credentials create(PipelineOptions options) { GcpOptions gcpOptions = options.as(GcpOptions.class); try { CredentialFactory factory = InstanceBuilder.ofType(CredentialFactory.class) .fromClass(gcpOptions.getCredentialFactoryClass()) .fromFactoryMethod("fromOptions") .withArg(PipelineOptions.class, options) .build(); return factory.getCredential(); } catch (IOException | GeneralSecurityException e) { throw new RuntimeException("Unable to obtain credential", e); } } }
@Override public PathValidator create(PipelineOptions options) { GcsOptions gcsOptions = options.as(GcsOptions.class); return InstanceBuilder.ofType(PathValidator.class) .fromClass(gcsOptions.getPathValidatorClass()) .fromFactoryMethod("fromOptions") .withArg(PipelineOptions.class, options) .build(); } }
@Override public Stager create(PipelineOptions options) { DataflowPipelineDebugOptions debugOptions = options.as(DataflowPipelineDebugOptions.class); return InstanceBuilder.ofType(Stager.class) .fromClass(debugOptions.getStagerClass()) .fromFactoryMethod("fromOptions") .withArg(PipelineOptions.class, options) .build(); } }
@Test public void testBadReturnType() throws Exception { expectedEx.expect(RuntimeException.class); expectedEx.expectMessage(Matchers.containsString("must be assignable to String")); InstanceBuilder.ofType(String.class) .fromClassName(InstanceBuilderTest.class.getName()) .fromFactoryMethod("createTag") .withArg(String.class, "hello") .build(); }
/** * Constructs a runner from the provided {@link PipelineOptions}. * * @return The newly created runner. */ public static PipelineRunner<? extends PipelineResult> fromOptions(PipelineOptions options) { checkNotNull(options); PipelineOptionsValidator.validate(PipelineOptions.class, options); // (Re-)register standard FileSystems. Clobbers any prior credentials. FileSystems.setDefaultPipelineOptions(options); @SuppressWarnings("unchecked") PipelineRunner<? extends PipelineResult> result = InstanceBuilder.ofType(PipelineRunner.class) .fromClass(options.getRunner()) .fromFactoryMethod("fromOptions") .withArg(PipelineOptions.class, options) .build(); return result; }
@Test public void testBadMethod() throws Exception { expectedEx.expect(RuntimeException.class); expectedEx.expectMessage(Matchers.containsString("Unable to find factory method")); InstanceBuilder.ofType(String.class) .fromClassName(InstanceBuilderTest.class.getName()) .fromFactoryMethod("nonexistantFactoryMethod") .withArg(String.class, "hello") .withArg(String.class, " world!") .build(); }
@Test public void testBadArgs() throws Exception { expectedEx.expect(RuntimeException.class); expectedEx.expectMessage(Matchers.containsString("Unable to find factory method")); InstanceBuilder.ofType(TupleTag.class) .fromClassName(InstanceBuilderTest.class.getName()) .fromFactoryMethod("createTag") .withArg(String.class, "hello") .withArg(Integer.class, 42) .build(); }
@Test public void testFullNameLookup() throws Exception { TupleTag tag = InstanceBuilder.ofType(TupleTag.class) .fromClassName(InstanceBuilderTest.class.getName()) .fromFactoryMethod("createTag") .withArg(String.class, "hello world!") .build(); Assert.assertEquals("hello world!", tag.getId()); }
for (Class<? extends Coder> atomicCoder : DefaultCoderCloudObjectTranslatorRegistrar.KNOWN_ATOMIC_CODERS) { dataBuilder.add(InstanceBuilder.ofType(atomicCoder).fromFactoryMethod("of").build());