public static Optional<Environment> getEnvironment( PTransform ptransform, RehydratedComponents components) { try { String envId = KNOWN_URN_SPEC_EXTRACTORS .getOrDefault(ptransform.getSpec().getUrn(), DEFAULT_SPEC_EXTRACTOR) .getEnvironmentId(ptransform); if (!Strings.isNullOrEmpty(envId)) { // Some PTransform payloads may have an empty (default) Environment ID, for example a // WindowIntoPayload with a known WindowFn. Others will never have an Environment ID, such // as a GroupByKeyPayload, and the Default extractor returns null in this case. return Optional.of(components.getEnvironment(envId)); } else { return Optional.empty(); } } catch (IOException e) { throw new RuntimeException(e); } }
@Test public void testEnvironment() { SdkComponents sdkComponents = SdkComponents.create(); sdkComponents.registerEnvironment(Environments.createDockerEnvironment("java")); Environment env = Environments.createDockerEnvironment("java_test"); String id = sdkComponents.registerEnvironment(env); RehydratedComponents rehydratedComponents = RehydratedComponents.forComponents(sdkComponents.toComponents()); Environment rehydratedEnv = rehydratedComponents.getEnvironment(id); assertThat(rehydratedEnv, equalTo(env)); assertThat(rehydratedComponents.getEnvironment(id), theInstance(rehydratedEnv)); } }