feat: elastic plugin class should contain only one constructor

This commit is contained in:
金戟
2022-02-20 22:22:00 +08:00
parent df9e2395cc
commit 351b3399e6

View File

@@ -38,7 +38,7 @@ public class OmniClassHandler extends BaseClassHandler {
@Override
protected void transform(ClassNode cn) {
if (isInterfaceOrAtom(cn) || isJunitTestClass(cn) || isUninstantiableClass(cn) || hasSpecialAnnotation(cn)) {
if (isInterfaceOrAtom(cn) || isUniqueConstructorClass(cn) || isUninstantiableClass(cn) || hasSpecialAnnotation(cn)) {
return;
}
addConstructorWithVoidTypeParameter(cn);
@@ -89,7 +89,11 @@ public class OmniClassHandler extends BaseClassHandler {
return (cn.access & ACC_INTERFACE) != 0 || cn.superName == null || VOID_TYPE.equals(cn.name);
}
private boolean isJunitTestClass(ClassNode cn) {
private boolean isUniqueConstructorClass(ClassNode cn) {
// elastic plugin class should contain only one constructor
if ("org/elasticsearch/plugins/Plugin".equals(cn.superName)) {
return true;
}
// junit require test class contains only one constructor
for (MethodNode mn : cn.methods) {
if (mn.visibleAnnotations == null) {