Hi,
I am trying to get flink schema evolution to work for me using POJO
serializer. But I found out that if an enum is present in the POJO then the
POJO serializer is not used. Example of my POJO is as follows :

public class Rule {
String id;int val;
RuleType ruleType;//Newly added field//int val2 = 0;
public Rule() {}
public Rule(String id, int val, RuleType ruleType) {
    this.id = id;
    this.val = val;
    this.ruleType = ruleType;
    //this.val2 = val2;
}
public String getId() {
    return id;
}
public void setId(String id) {
    this.id = id;
}
public int getVal() {
    return val;
}
public void setVal(int val) {
    this.val = val;
}
public RuleType getRuleType() {
    return ruleType;
}
public void setRuleType(RuleType ruleType) {
    this.ruleType = ruleType;
}
//public int getVal2() {//    return val2;//}
//public void setVal2(int val2) {//    this.val2 = val2;//}
@Overridepublic boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    Rule rule = (Rule) o;
    return val == rule.val && id.equals(rule.id) && ruleType == rule.ruleType;
}
@Overridepublic int hashCode() {
    return Objects.hash(id, val, ruleType);
}
@Overridepublic String toString() {
    return "Rule{" +
            "name='" + id + '\'' +
            ", val=" + val +
            ", ruleType=" + ruleType +
            '}';
}

}

RuleType is an enum class as follows :

public enum RuleType {
    X,
    Y,
    Z

}

Now for the Rule class the schema evolution (Adding a new field called
val2), works only if I write a custom typeFactory for this class.

Is there a way that I can write typeFactory for the enum class ? Why does
the flink not recognize enum in a POJO class ?

Reply via email to