aromanenko-dev commented on code in PR #25611:
URL: https://github.com/apache/beam/pull/25611#discussion_r1116007589
##########
sdks/java/extensions/schemaio-expansion-service/src/main/java/org/apache/beam/sdk/extensions/schemaio/expansion/ExternalSchemaIOTransformRegistrar.java:
##########
@@ -50,22 +51,50 @@ public class ExternalSchemaIOTransformRegistrar implements
ExternalTransformRegi
@Override
public Map<String, ExternalTransformBuilder<?, ?, ?>>
knownBuilderInstances() {
- ImmutableMap.Builder builder = ImmutableMap.<String,
ExternalTransformRegistrar>builder();
+ Map<String, ExternalTransformBuilder<?, ?, ?>> providers = new HashMap<>();
try {
- for (SchemaIOProvider schemaIOProvider :
ServiceLoader.load(SchemaIOProvider.class)) {
- builder.put(
- "beam:transform:org.apache.beam:schemaio_" +
schemaIOProvider.identifier() + "_read:v1",
- new ReaderBuilder(schemaIOProvider));
- builder.put(
- "beam:transform:org.apache.beam:schemaio_"
- + schemaIOProvider.identifier()
- + "_write:v1",
- new WriterBuilder(schemaIOProvider));
+ for (SchemaIOProvider provider :
ServiceLoader.load(SchemaIOProvider.class)) {
+ // Avro provider is treated as a special case since two Avro providers
may want to be loaded
+ // from "core" (deprecated) and from "extensions/avro" (actual) - but
only one must succeed.
+ // TODO: we won't need this check once all Avro providers from "core"
will be
+ // removed
+ if (provider.identifier().equals("avro")) {
+ // Avro provider from "extensions/avro" must have a priority.
+ if
(provider.getClass().getName().startsWith("org.apache.beam.sdk.extensions.avro"))
{
+ // Load Avro provider from "extensions/avro" by any case.
+ loadProvider(providers, provider);
Review Comment:
Changed
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]