Skip to content
This repository has been archived by the owner on Apr 1, 2024. It is now read-only.

ISSUE-16058: PIP-177: Add the classLoader field for SchemaDefinition #4377

Closed
sijie opened this issue Jun 14, 2022 · 0 comments
Closed

ISSUE-16058: PIP-177: Add the classLoader field for SchemaDefinition #4377

sijie opened this issue Jun 14, 2022 · 0 comments
Assignees
Labels

Comments

@sijie
Copy link
Member

sijie commented Jun 14, 2022

Original Issue: apache#16058


Motivation

Now, don‘t register logical type conversions when use SchemaDefinition.<T>builder().withJsonDef() to create the schema, beacase it without classLoader param. (e.g: apache#15899)

See: https://github.com/apache/pulsar/blob/04aa9e8e51869d1621a7e25402a656084eebfc09/pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/reader/AvroReader.java#L58-L68

We can add the classLoader field for SchemaDefinition, user can manually pass a classLoader to register logical type conversions

Goal

This proposes to add the classLoader field for SchemaDefinition. When using SchemaDefinition.<T>builder().withJsonDef() to create the schema it must manually specify a classLoader otherwise, the converter will not work.

The priority of the classLoader field will be higher than by the pojoClass.getClassLoader().

API Changes

public class SchemaDefinition {
    //....

    /**
     * Set schema of pojo classLoader.
     *
     * @param classLoader pojo classLoader
     *
     * @return schema definition builder
     */
    SchemaDefinitionBuilder<T> withClassLoader(ClassLoader classLoader);
}
public class SchemaDefinition {
    //....

    /**
     * Get pojo classLoader.
     *
     * @return pojo schema
     */
    ClassLoader getClassLoader();
}

Implementation

Add the classloader field for SchemaDefinition.

@sijie sijie added the PIP label Jun 14, 2022
@coderzc coderzc self-assigned this Jul 1, 2022
@coderzc coderzc closed this as completed Jul 1, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

2 participants