@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 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); } } }
public MetricsPusher( MetricsContainerStepMap metricsContainerStepMap, PipelineOptions pipelineOptions, PipelineResult pipelineResult) { this.metricsContainerStepMap = metricsContainerStepMap; this.pipelineResult = pipelineResult; period = pipelineOptions.getMetricsPushPeriod(); // calls the constructor of MetricsSink implementation specified in // pipelineOptions.getMetricsSink() passing the pipelineOptions metricsSink = InstanceBuilder.ofType(MetricsSink.class) .fromClass(pipelineOptions.getMetricsSink()) .withArg(PipelineOptions.class, pipelineOptions) .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(); } }
/** * Backing implementation for {@link PipelineOptions#as(Class)}. * * @param iface The interface that the returned object needs to implement. * @return An object that implements the interface {@code <T>}. */ synchronized <T extends PipelineOptions> T as(Class<T> iface) { checkNotNull(iface); checkArgument(iface.isInterface(), "Not an interface: %s", iface); if (!interfaceToProxyCache.containsKey(iface)) { Registration<T> registration = PipelineOptionsFactory.CACHE.get().validateWellFormed(iface, knownInterfaces); List<PropertyDescriptor> propertyDescriptors = registration.getPropertyDescriptors(); Class<T> proxyClass = registration.getProxyClass(); gettersToPropertyNames.putAll(generateGettersToPropertyNames(propertyDescriptors)); settersToPropertyNames.putAll(generateSettersToPropertyNames(propertyDescriptors)); knownInterfaces.add(iface); interfaceToProxyCache.putInstance( iface, InstanceBuilder.ofType(proxyClass) .fromClass(proxyClass) .withArg(InvocationHandler.class, this) .build()); } return interfaceToProxyCache.getInstance(iface); }
/** * 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; }
S3FileSystem(S3Options options) { this.options = checkNotNull(options, "options"); if (Strings.isNullOrEmpty(options.getAwsRegion())) { LOG.info( "The AWS S3 Beam extension was included in this build, but the awsRegion flag " + "was not specified. If you don't plan to use S3, then ignore this message."); } this.amazonS3 = InstanceBuilder.ofType(S3ClientBuilderFactory.class) .fromClass(options.getS3ClientFactoryClass()) .build() .createBuilder(options) .build(); checkNotNull(options.getS3StorageClass(), "storageClass"); checkArgument(options.getS3ThreadPoolSize() > 0, "threadPoolSize"); executorService = MoreExecutors.listeningDecorator( Executors.newFixedThreadPool( options.getS3ThreadPoolSize(), new ThreadFactoryBuilder().setDaemon(true).build())); }