apache/seatunnel · error · UnsupportedOperationException

The Factory has not been implemented and the deprecated Plug

Error message

The Factory has not been implemented and the deprecated Plugin will be used.

What it means

Default implementation of TableTransformFactory.createTransform throws UnsupportedOperationException when the transform factory has not implemented the new Factory API, meaning the deprecated legacy Plugin (SeaTunnelTransform) path should be used. Seeing the exception directly means the factory is incomplete or the caller skipped the fallback.

Source

Thrown at seatunnel-api/src/main/java/org/apache/seatunnel/api/table/factory/TableTransformFactory.java:36

package org.apache.seatunnel.api.table.factory;

import org.apache.seatunnel.api.table.connector.TableTransform;

/**
 * This is an SPI interface, used to create {@link
 * org.apache.seatunnel.api.table.connector.TableTransform}. Each plugin need to have it own
 * implementation.
 */
public interface TableTransformFactory extends Factory {

    /**
     * We will never use this method now. So gave a default implement and return null.
     *
     * @param context TableFactoryContext
     * @return
     */
    default <T> TableTransform<T> createTransform(TableTransformFactoryContext context) {
        throw new UnsupportedOperationException(
                "The Factory has not been implemented and the deprecated Plugin will be used.");
    }
}

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Implement createTransform(TableTransformFactoryContext) in the transform factory.
  2. Use the framework discovery path that falls back to the deprecated plugin.
  3. Migrate the transform to the TableTransformFactory API.
  4. Upgrade the transform plugin to a version implementing the new method.

Example fix

// before
public class MyTransformFactory implements TableTransformFactory { /* legacy only */ }
// after
public class MyTransformFactory implements TableTransformFactory {
    @Override
    public <T> TableTransform<T> createTransform(TableTransformFactoryContext context) {
        return new MyTableTransform<>(context);
    }
}
Defensive patterns

Strategy: fallback

Try / catch

try { return factory.createTransform(context); } catch (UnsupportedOperationException e) { return createTransformFromDeprecatedPlugin(context); }

Prevention

When it happens

Trigger: Calling createTransform(TableTransformFactoryContext) on a transform factory that only implements the deprecated plugin interface, or invoking it from a path (custom engine glue, tests) that does not fall back to legacy discovery.

Common situations: Custom transforms still on the old SeaTunnelTransform API; older connector jars on the classpath not migrated to the Factory API; direct factory invocation in tests or tooling.

Related errors


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/990837e327d23db8. Report an issue: GitHub.