perf[enhance]: use getName() in class

This commit is contained in:
sun committed 2023-09-21 11:13:23 +08:00
1 parent 6c26fdcb7f
commit 82d299e1c1
4 files changed
+47 -47

No files matched your search

@@ -39,7 +39,7 @@ public abstract class EnhanceUtils {
var classPool = ClassPool.getDefault();
for (var clazz : classArray) {
if (classPool.find(clazz.getCanonicalName()) == null) {
if (classPool.find(clazz.getName()) == null) {
ClassClassPath classPath = new ClassClassPath(clazz);
classPool.insertClassPath(classPath);
}
@@ -54,31 +54,31 @@ public abstract class EnhanceUtils {
Class<?> clazz = definition.getEventClazz();
// 定义类名称
CtClass enhanceClazz = classPool.makeClass(EnhanceUtils.class.getCanonicalName() + StringUtils.capitalize(NamespaceHandler.EVENT) + UuidUtils.getLocalIntId());
enhanceClazz.addInterface(classPool.get(IEventReceiver.class.getCanonicalName()));
CtClass enhanceClazz = classPool.makeClass(EnhanceUtils.class.getName() + StringUtils.capitalize(NamespaceHandler.EVENT) + UuidUtils.getLocalIntId());
enhanceClazz.addInterface(classPool.get(IEventReceiver.class.getName()));
// 定义类中的一个成员
CtField field = new CtField(classPool.get(bean.getClass().getCanonicalName()), "bean", enhanceClazz);
CtField field = new CtField(classPool.get(bean.getClass().getName()), "bean", enhanceClazz);
field.setModifiers(Modifier.PRIVATE);
enhanceClazz.addField(field);
// 定义类的构造器
CtConstructor constructor = new CtConstructor(classPool.get(new String[]{bean.getClass().getCanonicalName()}), enhanceClazz);
CtConstructor constructor = new CtConstructor(classPool.get(new String[]{bean.getClass().getName()}), enhanceClazz);
constructor.setBody("{this.bean=$1;}");
constructor.setModifiers(Modifier.PUBLIC);
enhanceClazz.addConstructor(constructor);
// 定义类实现的接口方法invoker
CtMethod invokeMethod = new CtMethod(classPool.get(void.class.getCanonicalName()), "invoke", classPool.get(new String[]{IEvent.class.getCanonicalName()}), enhanceClazz);
CtMethod invokeMethod = new CtMethod(classPool.get(void.class.getName()), "invoke", classPool.get(new String[]{IEvent.class.getName()}), enhanceClazz);
invokeMethod.setModifiers(Modifier.PUBLIC + Modifier.FINAL);
String invokeMethodBody = StringUtils.format("{ this.bean.{}(({})$1); }", method.getName(), clazz.getCanonicalName()); // 强制类型转换,转换为具体的Event类型的类型
String invokeMethodBody = StringUtils.format("{ this.bean.{}(({})$1); }", method.getName(), clazz.getName()); // 强制类型转换,转换为具体的Event类型的类型
invokeMethod.setBody(invokeMethodBody);
enhanceClazz.addMethod(invokeMethod);
// 定义类实现的接口方法bus
CtMethod busMethod = new CtMethod(classPool.get(Bus.class.getCanonicalName()), "bus", null, enhanceClazz);
CtMethod busMethod = new CtMethod(classPool.get(Bus.class.getName()), "bus", null, enhanceClazz);
busMethod.setModifiers(Modifier.PUBLIC + Modifier.FINAL);
String busMethodBody = StringUtils.format("{ return {}.{}; }", Bus.class.getCanonicalName(), definition.getBus());
String busMethodBody = StringUtils.format("{ return {}.{}; }", Bus.class.getName(), definition.getBus());
busMethod.setBody(busMethodBody);
enhanceClazz.addMethod(busMethod);
@@ -36,7 +36,7 @@ public abstract class EnhanceUtils {
var classPool = ClassPool.getDefault();
for (var clazz : classArray) {
if (classPool.find(clazz.getCanonicalName()) == null) {
if (classPool.find(clazz.getName()) == null) {
ClassClassPath classPath = new ClassClassPath(clazz);
classPool.insertClassPath(classPath);
}
@@ -50,39 +50,39 @@ public abstract class EnhanceUtils {
var packetClazz = definition.getPacketClazz();
var attachmentClazz = definition.getAttachmentClazz();
var enhanceClazz = classPool.makeClass(EnhanceUtils.class.getCanonicalName() + "Route" + UuidUtils.getLocalIntId());
enhanceClazz.addInterface(classPool.get(IPacketReceiver.class.getCanonicalName()));
var enhanceClazz = classPool.makeClass(EnhanceUtils.class.getName() + "Route" + UuidUtils.getLocalIntId());
enhanceClazz.addInterface(classPool.get(IPacketReceiver.class.getName()));
var field = new CtField(classPool.get(bean.getClass().getCanonicalName()), "bean", enhanceClazz);
var field = new CtField(classPool.get(bean.getClass().getName()), "bean", enhanceClazz);
field.setModifiers(Modifier.PRIVATE);
enhanceClazz.addField(field);
var constructor = new CtConstructor(classPool.get(new String[]{bean.getClass().getCanonicalName()}), enhanceClazz);
var constructor = new CtConstructor(classPool.get(new String[]{bean.getClass().getName()}), enhanceClazz);
constructor.setBody("{this.bean=$1;}");
constructor.setModifiers(Modifier.PUBLIC);
enhanceClazz.addConstructor(constructor);
var invokeMethod = new CtMethod(classPool.get(void.class.getCanonicalName()), "invoke", classPool.get(new String[]{Session.class.getCanonicalName(), Object.class.getCanonicalName(), Object.class.getCanonicalName()}), enhanceClazz);
var invokeMethod = new CtMethod(classPool.get(void.class.getName()), "invoke", classPool.get(new String[]{Session.class.getName(), Object.class.getName(), Object.class.getName()}), enhanceClazz);
invokeMethod.setModifiers(Modifier.PUBLIC + Modifier.FINAL);
if (attachmentClazz == null) {
// Cast type(强制类型转换)
String invokeMethodBody = StringUtils.format("{this.bean.{}($1, ({})$2);}", method.getName(), packetClazz.getCanonicalName());
String invokeMethodBody = StringUtils.format("{this.bean.{}($1, ({})$2);}", method.getName(), packetClazz.getName());
invokeMethod.setBody(invokeMethodBody);
} else {
String invokeMethodBody = StringUtils.format("{this.bean.{}($1, ({})$2, ({})$3);}", method.getName(), packetClazz.getCanonicalName(), attachmentClazz.getCanonicalName());
String invokeMethodBody = StringUtils.format("{this.bean.{}($1, ({})$2, ({})$3);}", method.getName(), packetClazz.getName(), attachmentClazz.getName());
invokeMethod.setBody(invokeMethodBody);
}
enhanceClazz.addMethod(invokeMethod);
// 定义类实现的接口方法task
CtMethod taskMethod = new CtMethod(classPool.get(Task.class.getCanonicalName()), "task", null, enhanceClazz);
CtMethod taskMethod = new CtMethod(classPool.get(Task.class.getName()), "task", null, enhanceClazz);
taskMethod.setModifiers(Modifier.PUBLIC + Modifier.FINAL);
String taskMethodBody = StringUtils.format("{ return {}.{}; }", Task.class.getCanonicalName(), definition.getTask());
String taskMethodBody = StringUtils.format("{ return {}.{}; }", Task.class.getName(), definition.getTask());
taskMethod.setBody(taskMethodBody);
enhanceClazz.addMethod(taskMethod);
// 定义类实现的接口方法attachment
CtMethod attachmentMethod = new CtMethod(classPool.get(Class.class.getCanonicalName()), "attachment", null, enhanceClazz);
CtMethod attachmentMethod = new CtMethod(classPool.get(Class.class.getName()), "attachment", null, enhanceClazz);
attachmentMethod.setModifiers(Modifier.PUBLIC + Modifier.FINAL);
if (attachmentClazz == null) {
String attachmentMethodBody = "{ return null; }";
@@ -55,17 +55,17 @@ public abstract class EnhanceUtils {
var classPool = ClassPool.getDefault();
// 导入需要的包
classPool.importPackage(ByteBufUtils.class.getCanonicalName());
classPool.importPackage(CollectionUtils.class.getCanonicalName());
classPool.importPackage(ArrayUtils.class.getCanonicalName());
classPool.importPackage(Iterator.class.getCanonicalName());
classPool.importPackage(List.class.getCanonicalName());
classPool.importPackage(Map.class.getCanonicalName());
classPool.importPackage(Set.class.getCanonicalName());
classPool.importPackage(ByteBufUtils.class.getName());
classPool.importPackage(CollectionUtils.class.getName());
classPool.importPackage(ArrayUtils.class.getName());
classPool.importPackage(Iterator.class.getName());
classPool.importPackage(List.class.getName());
classPool.importPackage(Map.class.getName());
classPool.importPackage(Set.class.getName());
// 增加类的路径
for (var clazz : classArray) {
if (classPool.find(clazz.getCanonicalName()) == null) {
if (classPool.find(clazz.getName()) == null) {
ClassClassPath classPath = new ClassClassPath(clazz);
classPool.insertClassPath(classPath);
}
@@ -114,11 +114,11 @@ public abstract class EnhanceUtils {
var packetFields = registration.getFieldRegistrations();
// 定义类名称
CtClass enhanceClazz = classPool.makeClass(ProtocolRegistration.class.getCanonicalName() + protocolId);
enhanceClazz.addInterface(classPool.get(IProtocolRegistration.class.getCanonicalName()));
CtClass enhanceClazz = classPool.makeClass(ProtocolRegistration.class.getName() + protocolId);
enhanceClazz.addInterface(classPool.get(IProtocolRegistration.class.getName()));
// 定义类中的一个成员
CtField constructorFiled = new CtField(classPool.get(Constructor.class.getCanonicalName()), "constructor", enhanceClazz);
CtField constructorFiled = new CtField(classPool.get(Constructor.class.getName()), "constructor", enhanceClazz);
constructorFiled.setModifiers(Modifier.PRIVATE);
enhanceClazz.addField(constructorFiled);
@@ -130,39 +130,39 @@ public abstract class EnhanceUtils {
.toList();
for (var subProtocolId : allSubProtocolIds) {
var protocolRegistrationField = new CtField(classPool.get(IProtocolRegistration.class.getCanonicalName()), getProtocolRegistrationFieldNameByProtocolId(subProtocolId), enhanceClazz);
var protocolRegistrationField = new CtField(classPool.get(IProtocolRegistration.class.getName()), getProtocolRegistrationFieldNameByProtocolId(subProtocolId), enhanceClazz);
protocolRegistrationField.setModifiers(Modifier.PRIVATE);
enhanceClazz.addField(protocolRegistrationField);
}
// 定义类的构造器
CtConstructor constructor = new CtConstructor(classPool.get(new String[]{Constructor.class.getCanonicalName()}), enhanceClazz);
CtConstructor constructor = new CtConstructor(classPool.get(new String[]{Constructor.class.getName()}), enhanceClazz);
constructor.setBody("{this.constructor=$1;}");
constructor.setModifiers(Modifier.PUBLIC);
enhanceClazz.addConstructor(constructor);
// 定义类实现的接口方法
CtMethod protocolIdMethod = new CtMethod(classPool.get(short.class.getCanonicalName()), "protocolId", null, enhanceClazz);
CtMethod protocolIdMethod = new CtMethod(classPool.get(short.class.getName()), "protocolId", null, enhanceClazz);
protocolIdMethod.setModifiers(Modifier.PUBLIC + Modifier.FINAL);
protocolIdMethod.setBody("{return " + registration.protocolId() + ";}");
enhanceClazz.addMethod(protocolIdMethod);
CtMethod protocolConstructorMethod = new CtMethod(classPool.get(Constructor.class.getCanonicalName()), "protocolConstructor", null, enhanceClazz);
CtMethod protocolConstructorMethod = new CtMethod(classPool.get(Constructor.class.getName()), "protocolConstructor", null, enhanceClazz);
protocolConstructorMethod.setModifiers(Modifier.PUBLIC + Modifier.FINAL);
protocolConstructorMethod.setBody("{return this.constructor;}");
enhanceClazz.addMethod(protocolConstructorMethod);
CtMethod moduleMethod = new CtMethod(classPool.get(byte.class.getCanonicalName()), "module", null, enhanceClazz);
CtMethod moduleMethod = new CtMethod(classPool.get(byte.class.getName()), "module", null, enhanceClazz);
moduleMethod.setModifiers(Modifier.PUBLIC + Modifier.FINAL);
moduleMethod.setBody("{return " + registration.module() + ";}");
enhanceClazz.addMethod(moduleMethod);
CtMethod writeMethod = new CtMethod(classPool.get(void.class.getCanonicalName()), "write", classPool.get(new String[]{ByteBuf.class.getCanonicalName(), Object.class.getCanonicalName()}), enhanceClazz);
CtMethod writeMethod = new CtMethod(classPool.get(void.class.getName()), "write", classPool.get(new String[]{ByteBuf.class.getName(), Object.class.getName()}), enhanceClazz);
writeMethod.setModifiers(Modifier.PUBLIC + Modifier.FINAL);
writeMethod.setBody(writeMethodBody(registration));
enhanceClazz.addMethod(writeMethod);
CtMethod readMethod = new CtMethod(classPool.get(Object.class.getCanonicalName()), "read", classPool.get(new String[]{ByteBuf.class.getCanonicalName()}), enhanceClazz);
CtMethod readMethod = new CtMethod(classPool.get(Object.class.getName()), "read", classPool.get(new String[]{ByteBuf.class.getName()}), enhanceClazz);
readMethod.setModifiers(Modifier.PUBLIC + Modifier.FINAL);
readMethod.setBody(readMethodBody(registration));
enhanceClazz.addMethod(readMethod);
@@ -185,7 +185,7 @@ public abstract class EnhanceUtils {
var packetClazz = constructor.getDeclaringClass();
var builder = new StringBuilder();
builder.append("{").append(packetClazz.getCanonicalName() + " packet = (" + packetClazz.getCanonicalName() + ")$2;");
builder.append("{").append(packetClazz.getName() + " packet = (" + packetClazz.getName() + ")$2;");
builder.append("if(ByteBufUtils.writePacketFlag($1, packet)){").append("return;}");
for (var i = 0; i < fields.length; i++) {
var field = fields[i];
@@ -229,10 +229,10 @@ public abstract class EnhanceUtils {
constructorParam.set(index, readObject);
}
builder.append(packetClazz.getCanonicalName() + " packet=new " + packetClazz.getCanonicalName() + "(" + constructorParam.stream().collect(Collectors.joining(StringUtils.COMMA)) + ");");
builder.append(packetClazz.getName() + " packet=new " + packetClazz.getName() + "(" + constructorParam.stream().collect(Collectors.joining(StringUtils.COMMA)) + ");");
} else {
var fields = registration.getFields();
builder.append(packetClazz.getCanonicalName() + " packet=new " + packetClazz.getCanonicalName() + "();");
builder.append(packetClazz.getName() + " packet=new " + packetClazz.getName() + "();");
for (var i = 0; i < fields.length; i++) {
var field = fields[i];
@@ -36,7 +36,7 @@ public abstract class EnhanceUtils {
var classPool = ClassPool.getDefault();
for (var clazz : classArray) {
if (classPool.find(clazz.getCanonicalName()) == null) {
if (classPool.find(clazz.getName()) == null) {
ClassClassPath classPath = new ClassClassPath(clazz);
classPool.insertClassPath(classPath);
}
@@ -50,22 +50,22 @@ public abstract class EnhanceUtils {
Method method = reflectScheduler.getMethod();
// 定义类名称
CtClass enhanceClazz = classPool.makeClass(EnhanceUtils.class.getCanonicalName() + StringUtils.capitalize(NamespaceHandler.SCHEDULER) + UuidUtils.getLocalIntId());
enhanceClazz.addInterface(classPool.get(IScheduler.class.getCanonicalName()));
CtClass enhanceClazz = classPool.makeClass(EnhanceUtils.class.getName() + StringUtils.capitalize(NamespaceHandler.SCHEDULER) + UuidUtils.getLocalIntId());
enhanceClazz.addInterface(classPool.get(IScheduler.class.getName()));
// 定义类中的一个成员
CtField field = new CtField(classPool.get(bean.getClass().getCanonicalName()), "bean", enhanceClazz);
CtField field = new CtField(classPool.get(bean.getClass().getName()), "bean", enhanceClazz);
field.setModifiers(Modifier.PRIVATE);
enhanceClazz.addField(field);
// 定义类的构造器
CtConstructor constructor = new CtConstructor(classPool.get(new String[]{bean.getClass().getCanonicalName()}), enhanceClazz);
CtConstructor constructor = new CtConstructor(classPool.get(new String[]{bean.getClass().getName()}), enhanceClazz);
constructor.setBody("{this.bean=$1;}");
constructor.setModifiers(Modifier.PUBLIC);
enhanceClazz.addConstructor(constructor);
// 定义类实现的接口方法
CtMethod invokeMethod = new CtMethod(classPool.get(void.class.getCanonicalName()), "invoke", null, enhanceClazz);
CtMethod invokeMethod = new CtMethod(classPool.get(void.class.getName()), "invoke", null, enhanceClazz);
invokeMethod.setModifiers(Modifier.PUBLIC + Modifier.FINAL);
String invokeMethodBody = "{this.bean." + method.getName() + "();}";
invokeMethod.setBody(invokeMethodBody);