public Connector create()

in src/main/java/org/apache/paimon/trino/TrinoConnectorFactory.java [79:152]


    public Connector create(
            String catalogName,
            Map<String, String> config,
            ConnectorContext context,
            Module module) {
        config = new HashMap<>(config);
        if (config.containsKey(HADOOP_CONF_FILES_KEY)) {
            for (String hadoopXml : config.get(HADOOP_CONF_FILES_KEY).split(",")) {
                try {
                    readHadoopXml(hadoopXml, config);
                } catch (Exception e) {
                    LOG.warn(
                            "Failed to read hadoop xml file " + hadoopXml + ", skipping this file.",
                            e);
                }
            }
        }

        ClassLoader classLoader = TrinoConnectorFactory.class.getClassLoader();
        try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) {
            Bootstrap app =
                    new Bootstrap(
                            new JsonModule(),
                            new TrinoModule(config),
                            new HdfsModule(),
                            new HdfsAuthenticationModule(),
                            // bind the trino file system module
                            newFileSystemModule(catalogName, context),
                            binder -> {
                                binder.bind(NodeVersion.class)
                                        .toInstance(
                                                new NodeVersion(
                                                        context.getNodeManager()
                                                                .getCurrentNode()
                                                                .getVersion()));
                                binder.bind(TypeManager.class).toInstance(context.getTypeManager());
                                binder.bind(OpenTelemetry.class)
                                        .toInstance(context.getOpenTelemetry());
                                binder.bind(Tracer.class).toInstance(context.getTracer());
                                binder.bind(OrcReaderConfig.class)
                                        .toInstance(new OrcReaderConfig());
                            },
                            module);

            Injector injector =
                    app.doNotInitializeLogging()
                            .setRequiredConfigurationProperties(Map.of())
                            .setOptionalConfigurationProperties(config)
                            .initialize();

            TrinoMetadata trinoMetadata = injector.getInstance(TrinoMetadataFactory.class).create();
            TrinoSplitManager trinoSplitManager = injector.getInstance(TrinoSplitManager.class);
            TrinoPageSourceProvider trinoPageSourceProvider =
                    injector.getInstance(TrinoPageSourceProvider.class);
            TrinoPageSinkProvider trinoPageSinkProvider =
                    injector.getInstance(TrinoPageSinkProvider.class);
            TrinoNodePartitioningProvider trinoNodePartitioningProvider =
                    injector.getInstance(TrinoNodePartitioningProvider.class);
            TrinoSessionProperties trinoSessionProperties =
                    injector.getInstance(TrinoSessionProperties.class);
            TrinoTableOptions trinoTableOptions = injector.getInstance(TrinoTableOptions.class);

            return new TrinoConnector(
                    new ClassLoaderSafeConnectorMetadata(trinoMetadata, classLoader),
                    new ClassLoaderSafeConnectorSplitManager(trinoSplitManager, classLoader),
                    new ClassLoaderSafeConnectorPageSourceProvider(
                            trinoPageSourceProvider, classLoader),
                    new ClassLoaderSafeConnectorPageSinkProvider(
                            trinoPageSinkProvider, classLoader),
                    trinoNodePartitioningProvider,
                    trinoTableOptions,
                    trinoSessionProperties);
        }
    }