モデルの基底クラスがJsonModelで注釈された内部クラスの場合に不正なクラスが生成される
esmasui opened this issue · 0 comments
esmasui commented
現象再現用のクラス
package com.example.model;
import net.vvakame.util.jsonpullparser.annotation.JsonKey;
import net.vvakame.util.jsonpullparser.annotation.JsonModel;
public class InnerClassInheritance {
@JsonModel
public static class TheParentClass {
@JsonKey
private boolean parentProperty;
public boolean isParentProperty() {
return parentProperty;
}
public void setParentProperty(boolean parentProperty) {
this.parentProperty = parentProperty;
}
}
@JsonModel
public static class TheSubClass extends TheParentClass {
@JsonKey
private boolean subProperty;
public boolean isSubProperty() {
return subProperty;
}
public void setSubProperty(boolean subProperty) {
this.subProperty = subProperty;
}
}
}
基底クラスのメタクラス TheParentClassGen.java
は com.example.model
パッケージに生成されており、FQCNは com.example.model.TheParentClassGen
である。
しかし生成されたサブクラスのメタクラス TheSubClassGen
からは com.example.model.InnerClassInheritance.TheParentClassGen
として参照されている。
このためコンパイラは参照を解決できずビルドエラーとなる。
TheSubClassGen.javaの一部
public static boolean parseValue(JsonPullParser parser, OnJsonObjectAddListener listener, String key, InnerClassInheritance.TheSubClass obj) throws IOException, JsonFormatException {
if ("subProperty".equals(key)) {
parser.getEventType();
obj.setSubProperty(parser.getValueBoolean());
} else if(com.example.model.InnerClassInheritance.TheParentClassGen.parseValue(parser, listener, key, obj)) {
return true;
} else {
return false;
}
return true;
}