You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Greg Harris (Jira)" <ji...@apache.org> on 2023/02/01 21:52:00 UTC

[jira] [Created] (KAFKA-14671) Refactor PredicatedTransformation to not implement Transformation

Greg Harris created KAFKA-14671:
-----------------------------------

             Summary: Refactor PredicatedTransformation to not implement Transformation
                 Key: KAFKA-14671
                 URL: https://issues.apache.org/jira/browse/KAFKA-14671
             Project: Kafka
          Issue Type: Task
          Components: KafkaConnect
    Affects Versions: 3.5.0
            Reporter: Greg Harris
            Assignee: Greg Harris


The PredicatedTransformation [https://github.com/apache/kafka/blob/trunk/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/PredicatedTransformation.java] 
is an instance of Transformation, a plugin class.
This allows both a PredicatedTransformation and a base Transformation to exist in the same list inside of the TransformationChain.

However, the PredicatedTransformation is not a compliant general-purpose Transformation, and has a number of non-standard behaviors:
1. The PredicatedTransformation is hidden from the REST API plugin listings
2. PredicatedTransformation::config and ::configure throw an exception, as they are not called under normal circumstances
3. The PredicatedTransformation has no default constructor, and would throw an exception if loaded via the standard plugin initialization logic.
4. The TransformationChain calls `.getClass()` on the PredicatedTransformation, which returns the PredicatedTransformation class itself, and not the wrapped transformation class.

The PredicatedTransformation is a reasonable abstraction to compose a predicate and transformation, but it can do so without subclassing Transformation, and incurring the above pitfalls.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)