diff --git a/src/main/java/org/redkale/annotation/ConstructorParameters.java b/src/main/java/org/redkale/annotation/ConstructorParameters.java
index 186a0a1ff..420fd06cf 100644
--- a/src/main/java/org/redkale/annotation/ConstructorParameters.java
+++ b/src/main/java/org/redkale/annotation/ConstructorParameters.java
@@ -5,9 +5,10 @@
*/
package org.redkale.annotation;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.*;
import static java.lang.annotation.ElementType.*;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import org.redkale.asm.AsmDepends;
/**
* 类似java.beans.ConstructorProperties, 必须配合Creator使用
@@ -20,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Documented
@Target({METHOD, CONSTRUCTOR})
@Retention(RUNTIME)
+@AsmDepends
public @interface ConstructorParameters {
String[] value();
diff --git a/src/main/java/org/redkale/asm/AsmDepends.java b/src/main/java/org/redkale/asm/AsmDepends.java
new file mode 100644
index 000000000..86ef3c84e
--- /dev/null
+++ b/src/main/java/org/redkale/asm/AsmDepends.java
@@ -0,0 +1,25 @@
+/*
+ *
+ */
+package org.redkale.asm;
+
+import java.lang.annotation.*;
+import static java.lang.annotation.ElementType.*;
+import static java.lang.annotation.RetentionPolicy.*;
+
+/**
+ * 被标记的元素表示会被asm动态字节码调用到
+ *
+ *
+ * 详情见: https://redkale.org
+ *
+ *
+ * @author zhangjx
+ * @since 2.8.0
+ */
+@Documented
+@Target({TYPE, METHOD, FIELD})
+@Retention(SOURCE)
+public @interface AsmDepends {
+
+}
diff --git a/src/main/java/org/redkale/convert/Decodeable.java b/src/main/java/org/redkale/convert/Decodeable.java
index be197771c..fff9ba86e 100644
--- a/src/main/java/org/redkale/convert/Decodeable.java
+++ b/src/main/java/org/redkale/convert/Decodeable.java
@@ -6,6 +6,7 @@
package org.redkale.convert;
import java.lang.reflect.Type;
+import org.redkale.asm.AsmDepends;
/**
* 反序列化操作类
@@ -17,6 +18,7 @@ import java.lang.reflect.Type;
* @param Reader输入的子类
* @param 反解析的数据类型
*/
+@AsmDepends
public interface Decodeable {
/**
diff --git a/src/main/java/org/redkale/convert/Encodeable.java b/src/main/java/org/redkale/convert/Encodeable.java
index 06d60a4c3..f279f07c2 100644
--- a/src/main/java/org/redkale/convert/Encodeable.java
+++ b/src/main/java/org/redkale/convert/Encodeable.java
@@ -6,6 +6,7 @@
package org.redkale.convert;
import java.lang.reflect.Type;
+import org.redkale.asm.AsmDepends;
/**
* 序列化操作类
@@ -17,6 +18,7 @@ import java.lang.reflect.Type;
* @param Writer输出的子类
* @param 序列化的数据类型
*/
+@AsmDepends
public interface Encodeable {
/**
diff --git a/src/main/java/org/redkale/convert/Writer.java b/src/main/java/org/redkale/convert/Writer.java
index c2977a3bb..7aedcb6e6 100644
--- a/src/main/java/org/redkale/convert/Writer.java
+++ b/src/main/java/org/redkale/convert/Writer.java
@@ -7,6 +7,7 @@ package org.redkale.convert;
import java.lang.reflect.*;
import java.util.function.*;
+import org.redkale.asm.AsmDepends;
import org.redkale.util.*;
/**
@@ -118,6 +119,7 @@ public abstract class Writer {
*
* @param clazz 对象的类名
*/
+ @AsmDepends
public final void writeObjectNull(final Class clazz) {
writeClassName(null);
writeNull();
diff --git a/src/main/java/org/redkale/convert/json/JsonWriter.java b/src/main/java/org/redkale/convert/json/JsonWriter.java
index fb8136632..c903262dc 100644
--- a/src/main/java/org/redkale/convert/json/JsonWriter.java
+++ b/src/main/java/org/redkale/convert/json/JsonWriter.java
@@ -6,6 +6,7 @@
package org.redkale.convert.json;
import java.lang.reflect.Type;
+import org.redkale.asm.AsmDepends;
import org.redkale.convert.*;
/**
@@ -34,6 +35,7 @@ public abstract class JsonWriter extends Writer {
return this;
}
+ @AsmDepends
public boolean isExtFuncEmpty() {
return this.objExtFunc == null && this.objFieldFunc == null;
}
@@ -63,42 +65,57 @@ public abstract class JsonWriter extends Writer {
* @param quote 是否加双引号
* @param value 非null且不含需要转义的字符的String值
*/
+ @AsmDepends
public abstract void writeLatin1To(final boolean quote, final String value);
+ @AsmDepends
public abstract void writeFieldShortValue(final byte[] fieldBytes, final short value);
+ @AsmDepends
public abstract void writeFieldIntValue(final byte[] fieldBytes, final int value);
+ @AsmDepends
public abstract void writeFieldLongValue(final byte[] fieldBytes, final long value);
+ @AsmDepends
public abstract void writeFieldLatin1Value(final byte[] fieldBytes, final String value);
+ @AsmDepends
public abstract void writeLastFieldShortValue(final byte[] fieldBytes, final short value);
+ @AsmDepends
public abstract void writeLastFieldIntValue(final byte[] fieldBytes, final int value);
+ @AsmDepends
public abstract void writeLastFieldLongValue(final byte[] fieldBytes, final long value);
+ @AsmDepends
public abstract void writeLastFieldLatin1Value(final byte[] fieldBytes, final String value);
//firstFieldBytes 必须带{开头
+ @AsmDepends
public abstract void writeObjectByOnlyOneLatin1FieldValue(final byte[] firstFieldBytes, final String value);
//firstFieldBytes 必须带{开头, lastFieldBytes必须,开头
+ @AsmDepends
public abstract void writeObjectByOnlyTwoIntFieldValue(final byte[] firstFieldBytes, final int value1, final byte[] lastFieldBytes, final int value2);
@Override
+ @AsmDepends
public abstract void writeBoolean(boolean value);
@Override
+ @AsmDepends
public abstract void writeInt(int value);
@Override
+ @AsmDepends
public abstract void writeLong(long value);
public abstract void writeString(final boolean quote, String value);
@Override
+ @AsmDepends
public abstract void writeString(String value);
@Override //只容许JsonBytesWriter重写此方法
diff --git a/src/main/java/org/redkale/net/sncp/SncpResponse.java b/src/main/java/org/redkale/net/sncp/SncpResponse.java
index 110ca7cd5..8392ab758 100644
--- a/src/main/java/org/redkale/net/sncp/SncpResponse.java
+++ b/src/main/java/org/redkale/net/sncp/SncpResponse.java
@@ -8,6 +8,7 @@ package org.redkale.net.sncp;
import java.lang.reflect.Type;
import java.nio.channels.CompletionHandler;
import java.util.concurrent.*;
+import org.redkale.asm.AsmDepends;
import org.redkale.convert.bson.BsonWriter;
import org.redkale.net.Response;
import org.redkale.util.ByteArray;
@@ -82,6 +83,7 @@ public class SncpResponse extends Response {
return this;
}
+ @AsmDepends
public T getParamAsyncHandler() {
return (T) this.paramAsyncHandler;
}
diff --git a/src/main/java/org/redkale/util/Utility.java b/src/main/java/org/redkale/util/Utility.java
index b72053709..e033f61f3 100644
--- a/src/main/java/org/redkale/util/Utility.java
+++ b/src/main/java/org/redkale/util/Utility.java
@@ -24,6 +24,7 @@ import java.util.stream.Stream;
import java.util.zip.GZIPInputStream;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
+import org.redkale.asm.AsmDepends;
import org.redkale.convert.json.JsonConvert;
/**
@@ -2741,6 +2742,7 @@ public final class Utility {
*
* @return 对象
*/
+ @AsmDepends
public static T convertValue(Type type, Object value) {
if (type == null || value == null) {
return (T) value;