diff --git a/src/main/java/javax/annotation/Priority.java b/src/main/java/javax/annotation/Priority.java
index 30f376277..9401516a3 100644
--- a/src/main/java/javax/annotation/Priority.java
+++ b/src/main/java/javax/annotation/Priority.java
@@ -16,16 +16,16 @@
*/
package javax.annotation;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
+import java.lang.annotation.*;
/**
* 值越大,优先级越高
*
* @since Common Annotations 1.2
+ *
+ * @deprecated replace by org.redkale.annotation.Priority
*/
+@Deprecated
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Priority {
diff --git a/src/main/java/javax/annotation/Resource.java b/src/main/java/javax/annotation/Resource.java
index e4aa22c8a..c4d0b7202 100644
--- a/src/main/java/javax/annotation/Resource.java
+++ b/src/main/java/javax/annotation/Resource.java
@@ -5,14 +5,14 @@
*/
package javax.annotation;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
+import java.lang.annotation.*;
/**
* @since Common Annotations 1.0
+ *
+ * @deprecated replace by org.redkale.annotation.Resource
*/
+@Deprecated
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Resource {
@@ -32,15 +32,6 @@ public @interface Resource {
// APPLICATION
// }
//
- /**
- * 是否必须存在
- *
- * @return boolean
- *
- * @since 2.8.0
- */
- public boolean required() default false;
-
/**
* 资源名称
*
diff --git a/src/main/java/javax/persistence/Cacheable.java b/src/main/java/javax/persistence/Cacheable.java
index 45238dd98..fe33d6196 100644
--- a/src/main/java/javax/persistence/Cacheable.java
+++ b/src/main/java/javax/persistence/Cacheable.java
@@ -17,8 +17,7 @@ package javax.persistence;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
+import java.lang.annotation.*;
/**
* Specifies whether an entity should be cached if caching is enabled
@@ -33,7 +32,10 @@ import java.lang.annotation.Target;
* not be cached by the provider.
*
* @since Java Persistence 2.0
+ *
+ * @deprecated replace by org.redkale.persistence.Cacheable
*/
+@Deprecated
@Target({TYPE})
@Retention(RUNTIME)
public @interface Cacheable {
diff --git a/src/main/java/javax/persistence/Column.java b/src/main/java/javax/persistence/Column.java
index ba1bfc25f..9b6503d83 100644
--- a/src/main/java/javax/persistence/Column.java
+++ b/src/main/java/javax/persistence/Column.java
@@ -15,11 +15,9 @@
***************************************************************************** */
package javax.persistence;
-import java.lang.annotation.Target;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.*;
/**
* Specifies the mapped column for a persistent property or field.
@@ -48,7 +46,10 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
*
*
* @since Java Persistence 1.0
+ *
+ * @deprecated replace by org.redkale.persistence.Column
*/
+@Deprecated
@Target({METHOD, FIELD})
@Retention(RUNTIME)
public @interface Column {
diff --git a/src/main/java/javax/persistence/Entity.java b/src/main/java/javax/persistence/Entity.java
index d3f4716a7..de8fd7209 100644
--- a/src/main/java/javax/persistence/Entity.java
+++ b/src/main/java/javax/persistence/Entity.java
@@ -15,16 +15,19 @@
******************************************************************************/
package javax.persistence;
-import java.lang.annotation.*;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.*;
/**
* Specifies that the class is an entity. This annotation is applied to the
* entity class.
*
* @since Java Persistence 1.0
+ *
+ * @deprecated replace by org.redkale.persistence.Entity
*/
+@Deprecated
@Inherited
@Documented
@Target(TYPE)
diff --git a/src/main/java/javax/persistence/Id.java b/src/main/java/javax/persistence/Id.java
index 522560aa2..5cb6feb74 100644
--- a/src/main/java/javax/persistence/Id.java
+++ b/src/main/java/javax/persistence/Id.java
@@ -15,11 +15,9 @@
******************************************************************************/
package javax.persistence;
-import java.lang.annotation.Target;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.*;
/**
* Specifies the primary key of an entity.
@@ -48,7 +46,10 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
* see GeneratedValue
*
* @since Java Persistence 1.0
+ *
+ * @deprecated replace by org.redkale.persistence.Id
*/
+@Deprecated
@Target({METHOD, FIELD})
@Retention(RUNTIME)
diff --git a/src/main/java/javax/persistence/Index.java b/src/main/java/javax/persistence/Index.java
index b5f5d9909..10f2e1adf 100644
--- a/src/main/java/javax/persistence/Index.java
+++ b/src/main/java/javax/persistence/Index.java
@@ -15,8 +15,7 @@
package javax.persistence;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
+import java.lang.annotation.*;
/**
* Used in schema generation to specify creation of an index.
@@ -38,8 +37,11 @@ import java.lang.annotation.Target;
* ASC (ascending order) is assumed.
*
* @since Java Persistence 2.1
+ *
+ * @deprecated replace by org.redkale.persistence.Index
*
*/
+@Deprecated
@Target({})
@Retention(RUNTIME)
public @interface Index {
diff --git a/src/main/java/javax/persistence/Table.java b/src/main/java/javax/persistence/Table.java
index 9da7348aa..b02d2e1b9 100644
--- a/src/main/java/javax/persistence/Table.java
+++ b/src/main/java/javax/persistence/Table.java
@@ -15,10 +15,9 @@
***************************************************************************** */
package javax.persistence;
-import java.lang.annotation.Target;
-import java.lang.annotation.Retention;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.*;
/**
* Specifies the primary table for the annotated entity. Additional
@@ -37,7 +36,10 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
*
*
* @since Java Persistence 1.0
+ *
+ * @deprecated replace by org.redkale.persistence.Table
*/
+@Deprecated
@Target(TYPE)
@Retention(RUNTIME)
public @interface Table {
diff --git a/src/main/java/javax/persistence/Transient.java b/src/main/java/javax/persistence/Transient.java
index 81446afd7..449038fb3 100644
--- a/src/main/java/javax/persistence/Transient.java
+++ b/src/main/java/javax/persistence/Transient.java
@@ -15,11 +15,9 @@
******************************************************************************/
package javax.persistence;
-import java.lang.annotation.Target;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.*;
/**
* Specifies that the property or field is not persistent. It is used
@@ -38,7 +36,10 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
*
*
* @since Java Persistence 1.0
+ *
+ * @deprecated replace by org.redkale.persistence.Transient
*/
+@Deprecated
@Target({METHOD, FIELD})
@Retention(RUNTIME)
diff --git a/src/main/java/javax/persistence/UniqueConstraint.java b/src/main/java/javax/persistence/UniqueConstraint.java
index ccb736f0f..26f29d05a 100644
--- a/src/main/java/javax/persistence/UniqueConstraint.java
+++ b/src/main/java/javax/persistence/UniqueConstraint.java
@@ -15,9 +15,8 @@
***************************************************************************** */
package javax.persistence;
-import java.lang.annotation.Target;
-import java.lang.annotation.Retention;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.*;
/**
* Specifies that a unique constraint is to be included in
@@ -35,7 +34,10 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
*
*
* @since Java Persistence 1.0
+ *
+ * @deprecated replace by org.redkale.persistence.UniqueConstraint
*/
+@Deprecated
@Target({})
@Retention(RUNTIME)
public @interface UniqueConstraint {
diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java
index e91bd4a50..28ec122fe 100644
--- a/src/main/java/module-info.java
+++ b/src/main/java/module-info.java
@@ -13,9 +13,7 @@ module redkale {
requires java.sql;
requires jdk.unsupported; //sun.misc.Unsafe
- exports javax.annotation;
- exports javax.persistence;
-
+ exports org.redkale.annotation;
exports org.redkale.asm;
exports org.redkale.boot;
exports org.redkale.boot.watch;
@@ -29,6 +27,7 @@ module redkale {
exports org.redkale.net.client;
exports org.redkale.net.http;
exports org.redkale.net.sncp;
+ exports org.redkale.persistence;
exports org.redkale.service;
exports org.redkale.source;
exports org.redkale.util;
diff --git a/src/main/java/org/redkale/annotation/AutoLoad.java b/src/main/java/org/redkale/annotation/AutoLoad.java
new file mode 100644
index 000000000..c6aa92c37
--- /dev/null
+++ b/src/main/java/org/redkale/annotation/AutoLoad.java
@@ -0,0 +1,26 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.redkale.annotation;
+
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.*;
+
+/**
+ * 自动加载。 使用场景:
+ * 1、被标记为@AutoLoad(false)的Service类不会被自动加载, 当被依赖时才会被加载
+ * 2、被标记为@AutoLoad(false)的Servlet类不会被自动加载
+ *
+ *
详情见: https://redkale.org + * @author zhangjx + */ +@Documented +@Target({TYPE}) +@Retention(RUNTIME) +public @interface AutoLoad { + + boolean value() default true; +} diff --git a/src/main/java/org/redkale/annotation/Bean.java b/src/main/java/org/redkale/annotation/Bean.java new file mode 100644 index 000000000..60de43c9d --- /dev/null +++ b/src/main/java/org/redkale/annotation/Bean.java @@ -0,0 +1,23 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.redkale.annotation; + +import java.lang.annotation.*; +import static java.lang.annotation.ElementType.TYPE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +/** + * 标记参数bean + * + * @since 2.5.0 + */ +@Inherited +@Documented +@Target(TYPE) +@Retention(RUNTIME) +public @interface Bean { + +} diff --git a/src/main/java/org/redkale/annotation/Command.java b/src/main/java/org/redkale/annotation/Command.java new file mode 100644 index 000000000..b4de4f9bd --- /dev/null +++ b/src/main/java/org/redkale/annotation/Command.java @@ -0,0 +1,50 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.redkale.annotation; + +import java.lang.annotation.*; +import static java.lang.annotation.ElementType.*; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +/** + * 接收命令的标记, 只能标记在本地模式下Service里参数为(String)或(String, String[])的public方法上 + * + *
+ * 详情见: https://redkale.org + * + * @author zhangjx + * + * @since 2.1.0 + */ +@Inherited +@Documented +@Target({METHOD}) +@Retention(RUNTIME) +public @interface Command { + + /** + * 命令号,没有指定值则接收所有的命令 + * + * @return String + */ + String value() default ""; + + /** + * 参数帮助说明,在value不为空命令redkale --help时显示 + * + * @return String + * + * @since 2.7.0 + */ + String description() default ""; + + /** + * 描述 + * + * @return String + */ + String comment() default ""; +} diff --git a/src/main/java/org/redkale/annotation/Comment.java b/src/main/java/org/redkale/annotation/Comment.java new file mode 100644 index 000000000..662d53314 --- /dev/null +++ b/src/main/java/org/redkale/annotation/Comment.java @@ -0,0 +1,29 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.redkale.annotation; + +import java.lang.annotation.*; +import static java.lang.annotation.ElementType.*; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +/** + * 标记注释,备注 + * + *
+ * 详情见: https://redkale.org + * + * @author zhangjx + */ +@Inherited +@Documented +@Target({TYPE, METHOD, FIELD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE, ANNOTATION_TYPE, TYPE_PARAMETER}) +@Retention(RUNTIME) +public @interface Comment { + + String name() default ""; + + String value(); +} diff --git a/src/main/java/org/redkale/annotation/ConstructorParameters.java b/src/main/java/org/redkale/annotation/ConstructorParameters.java new file mode 100644 index 000000000..186a0a1ff --- /dev/null +++ b/src/main/java/org/redkale/annotation/ConstructorParameters.java @@ -0,0 +1,26 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.redkale.annotation; + +import java.lang.annotation.*; +import static java.lang.annotation.ElementType.*; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +/** + * 类似java.beans.ConstructorProperties, 必须配合Creator使用 + * + *
+ * 详情见: https://redkale.org
+ *
+ * @author zhangjx
+ */
+@Documented
+@Target({METHOD, CONSTRUCTOR})
+@Retention(RUNTIME)
+public @interface ConstructorParameters {
+
+ String[] value();
+}
diff --git a/src/main/java/org/redkale/annotation/LogExcludeLevel.java b/src/main/java/org/redkale/annotation/LogExcludeLevel.java
new file mode 100644
index 000000000..4a0bc4139
--- /dev/null
+++ b/src/main/java/org/redkale/annotation/LogExcludeLevel.java
@@ -0,0 +1,46 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.redkale.annotation;
+
+import java.lang.annotation.*;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * 等于level日志级别且包含keys字符串的日志才会被排除
+ *
+ *
+ * @LogExcludeLevel(levels = {"FINEST"}, keys = {"SET username ="})
+ * public class UserRecord {
+ * public int userid;
+ * public String username = "";
+ * }
+ *
+ * 这样当调用DataSource对UserRecord对象进行操作时,拼接的SQL语句含"SET username ="字样的都会在FINEST日志级别过滤掉
+ *
+ * + * 详情见: https://redkale.org + * + * @author zhangjx + */ +@Documented +@Target({TYPE}) +@Retention(RUNTIME) +@Repeatable(LogExcludeLevel.LogExcludeLevels.class) +public @interface LogExcludeLevel { + + String[] levels(); + + String[] keys(); + + @Documented + @Target({TYPE}) + @Retention(RUNTIME) + @interface LogExcludeLevels { + + LogExcludeLevel[] value(); + } +} diff --git a/src/main/java/org/redkale/annotation/LogLevel.java b/src/main/java/org/redkale/annotation/LogLevel.java new file mode 100644 index 000000000..6955583d6 --- /dev/null +++ b/src/main/java/org/redkale/annotation/LogLevel.java @@ -0,0 +1,26 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.redkale.annotation; + +import java.lang.annotation.*; +import static java.lang.annotation.ElementType.TYPE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +/** + * 被标记的日志级别以上的才会被记录 + * + *
+ * 详情见: https://redkale.org
+ *
+ * @author zhangjx
+ */
+@Documented
+@Target({TYPE})
+@Retention(RUNTIME)
+public @interface LogLevel {
+
+ String value();
+}
diff --git a/src/main/java/org/redkale/annotation/Priority.java b/src/main/java/org/redkale/annotation/Priority.java
new file mode 100644
index 000000000..823bca725
--- /dev/null
+++ b/src/main/java/org/redkale/annotation/Priority.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.redkale.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 值越大,优先级越高
+ *
+ * @since Common Annotations 1.2
+ */
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Priority {
+
+ /**
+ * 优先级值
+ *
+ * @return int
+ */
+ int value();
+}
diff --git a/src/main/java/org/redkale/annotation/Resource.java b/src/main/java/org/redkale/annotation/Resource.java
new file mode 100644
index 000000000..2421e0f44
--- /dev/null
+++ b/src/main/java/org/redkale/annotation/Resource.java
@@ -0,0 +1,42 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.redkale.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * @since Common Annotations 1.0
+ *
+ * @since 2.8.0
+ */
+@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Resource {
+
+ /**
+ * 是否必须存在
+ *
+ * @return boolean
+ *
+ * @since 2.8.0
+ */
+ public boolean required() default true;
+
+ /**
+ * 资源名称
+ *
+ * @return String
+ */
+ public String name() default "";
+
+ /**
+ * 依赖注入的类型
+ *
+ * @return Class
+ */
+ public Class> type() default Object.class;
+
+}
diff --git a/src/main/java/org/redkale/annotation/ResourceListener.java b/src/main/java/org/redkale/annotation/ResourceListener.java
new file mode 100644
index 000000000..76986696e
--- /dev/null
+++ b/src/main/java/org/redkale/annotation/ResourceListener.java
@@ -0,0 +1,64 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.redkale.annotation;
+
+import java.lang.annotation.*;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * @Resource资源被更新时的监听事件, 本注解只能标记在方法参数为ResourceEvent[]上
+ * 注意: 一个类只能存在一个@ResourceListener的方法, 多余的会被忽略
+ * 方法在资源被更新以后调用。
+ *
+ *
+ * public class RecordService implements Service {
+ *
+ * @Resource(name = "record.id")
+ * private int id;
+ *
+ * @Resource(name = "record.name")
+ * private String name;
+ *
+ * @ResourceListener
+ * private void changeResource(ResourceEvent[] events) {
+ * for(ResourceEvent event : events) {
+ * System.out.println("@Resource = " + event.name() + " 资源变更: newVal = " + event.newValue() + ", oldVal = " + event.oldValue());
+ * }
+ * }
+ *
+ * public static void main(String[] args) throws Exception {
+ * ResourceFactory factory = ResourceFactory.root();
+ * factory.register("record.id", "2345");
+ * factory.register("record.name", "my old name");
+ * Record record = new Record();
+ * factory.inject(record);
+ * factory.register("record.name", "my new name");
+ * }
+ *
+ * }
+ *
+ *
+ *
+ * 详情见: https://redkale.org
+ *
+ * @author zhangjx
+ */
+@Documented
+@Target({METHOD})
+@Retention(RUNTIME)
+public @interface ResourceListener {
+
+ /**
+ * 新旧值是否不同时才回调方法
+ * true: 新值与旧值不同时才回调ResourceListener方法
+ * false: 只要执行了ResourceFactory.register 就回调ResourceListener方法
+ *
+ * @since 2.7.0
+ * @return boolean
+ */
+ boolean different() default true;
+}
diff --git a/src/main/java/org/redkale/annotation/ResourceType.java b/src/main/java/org/redkale/annotation/ResourceType.java
new file mode 100644
index 000000000..e3895a185
--- /dev/null
+++ b/src/main/java/org/redkale/annotation/ResourceType.java
@@ -0,0 +1,29 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.redkale.annotation;
+
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.*;
+
+/**
+ * 显式的指明资源类型。
+ * 调用ResourceFactory.register(Object rs)时通常执行的是ResourceFactory.register(rs.getClass(), Object rs);
+ * 若rs.getClass()的类标记了@ResourceType, 则使用@ResourceType.value()的class值进行注入。
+ *
+ *
+ * 详情见: https://redkale.org
+ *
+ * @author zhangjx
+ */
+@Inherited
+@Documented
+@Target({TYPE})
+@Retention(RUNTIME)
+public @interface ResourceType {
+
+ Class value();
+}
diff --git a/src/main/java/org/redkale/boot/ApiDocCommand.java b/src/main/java/org/redkale/boot/ApiDocCommand.java
index aaf26ee86..b63ec2b1d 100644
--- a/src/main/java/org/redkale/boot/ApiDocCommand.java
+++ b/src/main/java/org/redkale/boot/ApiDocCommand.java
@@ -13,11 +13,12 @@ import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.*;
import java.util.logging.*;
-import javax.persistence.*;
+import org.redkale.annotation.Comment;
import org.redkale.convert.*;
import org.redkale.convert.json.*;
import org.redkale.mq.MessageMultiConsumer;
import org.redkale.net.http.*;
+import org.redkale.persistence.*;
import org.redkale.service.RetResult;
import org.redkale.source.*;
import org.redkale.util.*;
@@ -261,14 +262,17 @@ public final class ApiDocCommand {
Column col = field.getAnnotation(Column.class);
FilterColumn fc = field.getAnnotation(FilterColumn.class);
Comment comment = field.getAnnotation(Comment.class);
+ org.redkale.util.Comment comment2 = field.getAnnotation(org.redkale.util.Comment.class);
if (comment != null) {
fieldmap.put("comment", comment.value());
+ } else if (comment2 != null) {
+ fieldmap.put("comment", comment2.value());
} else if (col != null) {
fieldmap.put("comment", col.comment());
} else if (fc != null) {
fieldmap.put("comment", fc.comment());
}
- fieldmap.put("primary", !filter && (field.getAnnotation(Id.class) != null));
+ fieldmap.put("primary", !filter && (field.getAnnotation(Id.class) != null || field.getAnnotation(javax.persistence.Id.class) != null));
fieldmap.put("updatable", (filter || col == null || col.updatable()));
if (servlet.getClass().getAnnotation(Rest.RestDyn.class) != null) {
@@ -444,6 +448,8 @@ public final class ApiDocCommand {
}
if (desc.isEmpty() && member.getField().getAnnotation(Comment.class) != null) {
desc = member.getField().getAnnotation(Comment.class).value();
+ } else if (desc.isEmpty() && member.getField().getAnnotation(org.redkale.util.Comment.class) != null) {
+ desc = member.getField().getAnnotation(org.redkale.util.Comment.class).value();
}
} else if (member.getMethod() != null) {
Column col = member.getMethod().getAnnotation(Column.class);
@@ -459,6 +465,8 @@ public final class ApiDocCommand {
}
if (desc.isEmpty() && member.getMethod().getAnnotation(Comment.class) != null) {
desc = member.getMethod().getAnnotation(Comment.class).value();
+ } else if (desc.isEmpty() && member.getMethod().getAnnotation(org.redkale.util.Comment.class) != null) {
+ desc = member.getMethod().getAnnotation(org.redkale.util.Comment.class).value();
}
}
if (!desc.isEmpty()) schemaMap.put("description", desc);
diff --git a/src/main/java/org/redkale/boot/Application.java b/src/main/java/org/redkale/boot/Application.java
index a00142dba..33a337d5a 100644
--- a/src/main/java/org/redkale/boot/Application.java
+++ b/src/main/java/org/redkale/boot/Application.java
@@ -5,15 +5,12 @@
*/
package org.redkale.boot;
-import org.redkale.cluster.ClusterAgent;
-import org.redkale.util.RedkaleClassLoader;
-import org.redkale.net.TransportGroupInfo;
import java.io.*;
import java.lang.reflect.*;
import java.net.*;
import java.net.http.HttpClient;
import java.nio.ByteBuffer;
-import java.nio.channels.*;
+import java.nio.channels.DatagramChannel;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.util.*;
@@ -21,8 +18,8 @@ import java.util.concurrent.*;
import java.util.concurrent.atomic.*;
import java.util.function.Consumer;
import java.util.logging.*;
-import javax.annotation.*;
import javax.net.ssl.SSLContext;
+import org.redkale.annotation.Resource;
import org.redkale.boot.ClassFilter.FilterEntry;
import org.redkale.cluster.*;
import org.redkale.convert.Convert;
@@ -36,7 +33,7 @@ import org.redkale.service.Service;
import org.redkale.source.*;
import org.redkale.util.AnyValue.DefaultAnyValue;
import org.redkale.util.*;
-import org.redkale.watch.*;
+import org.redkale.watch.WatchServlet;
/**
*
@@ -998,16 +995,23 @@ public final class Application {
@Override
public Object load(ResourceFactory rf, String srcResourceName, final Object srcObj, String resourceName, Field field, final Object attachment) {
try {
+ String resName = null;
Resource res = field.getAnnotation(Resource.class);
- if (res == null) return null;
+ if (res != null) {
+ resName = res.name();
+ } else {
+ javax.annotation.Resource res2 = field.getAnnotation(javax.annotation.Resource.class);
+ if (res2 != null) resName = res2.name();
+ }
+ if (resName == null) return null;
if (srcObj instanceof Service && Sncp.isRemote((Service) srcObj)) return null; //远程模式不得注入
Class type = field.getType();
if (type == Application.class) {
field.set(srcObj, application);
return application;
} else if (type == ResourceFactory.class) {
- boolean serv = RESNAME_SERVER_RESFACTORY.equals(res.name()) || res.name().equalsIgnoreCase("server");
- ResourceFactory rs = serv ? rf : (res.name().isEmpty() ? application.resourceFactory : null);
+ boolean serv = RESNAME_SERVER_RESFACTORY.equals(resName) || resName.equalsIgnoreCase("server");
+ ResourceFactory rs = serv ? rf : (resName.isEmpty() ? application.resourceFactory : null);
field.set(srcObj, rs);
return rs;
} else if (type == TransportFactory.class) {
@@ -1017,7 +1021,7 @@ public final class Application {
NodeServer server = null;
for (NodeServer ns : application.getNodeServers()) {
if (ns.getClass() != NodeSncpServer.class) continue;
- if (res.name().equals(ns.server.getName())) {
+ if (resName.equals(ns.server.getName())) {
server = ns;
break;
}
@@ -1028,7 +1032,7 @@ public final class Application {
NodeServer server = null;
for (NodeServer ns : application.getNodeServers()) {
if (ns.getClass() != NodeHttpServer.class) continue;
- if (res.name().equals(ns.server.getName())) {
+ if (resName.equals(ns.server.getName())) {
server = ns;
break;
}
@@ -1039,7 +1043,7 @@ public final class Application {
NodeServer server = null;
for (NodeServer ns : application.getNodeServers()) {
if (ns.getClass() != NodeWatchServer.class) continue;
- if (res.name().equals(ns.server.getName())) {
+ if (resName.equals(ns.server.getName())) {
server = ns;
break;
}
@@ -1067,7 +1071,7 @@ public final class Application {
//------------------------------------ 注册 java.net.http.HttpClient ------------------------------------
resourceFactory.register((ResourceFactory rf, String srcResourceName, final Object srcObj, String resourceName, Field field, final Object attachment) -> {
try {
- if (field.getAnnotation(Resource.class) == null) return null;
+ if (field.getAnnotation(Resource.class) == null && field.getAnnotation(javax.annotation.Resource.class) == null) return null;
java.net.http.HttpClient.Builder builder = java.net.http.HttpClient.newBuilder();
if (resourceName.endsWith(".1.1")) {
builder.version(HttpClient.Version.HTTP_1_1);
@@ -1087,7 +1091,7 @@ public final class Application {
//------------------------------------ 注册 HttpSimpleClient ------------------------------------
resourceFactory.register((ResourceFactory rf, String srcResourceName, final Object srcObj, String resourceName, Field field, final Object attachment) -> {
try {
- if (field.getAnnotation(Resource.class) == null) return null;
+ if (field.getAnnotation(Resource.class) == null && field.getAnnotation(javax.annotation.Resource.class) == null) return null;
HttpSimpleClient httpClient = HttpSimpleClient.create(clientAsyncGroup);
field.set(srcObj, httpClient);
rf.inject(resourceName, httpClient, null); // 给其可能包含@Resource的字段赋值;
@@ -1130,7 +1134,7 @@ public final class Application {
//------------------------------------ 注册 HttpMessageClient ------------------------------------
resourceFactory.register((ResourceFactory rf, String srcResourceName, final Object srcObj, String resourceName, Field field, final Object attachment) -> {
try {
- if (field.getAnnotation(Resource.class) == null) return null;
+ if (field.getAnnotation(Resource.class) == null && field.getAnnotation(javax.annotation.Resource.class) == null) return null;
if (clusterAgent == null) {
HttpMessageClient messageClient = new HttpMessageLocalClient(application, resourceName);
field.set(srcObj, messageClient);
diff --git a/src/main/java/org/redkale/boot/ClassFilter.java b/src/main/java/org/redkale/boot/ClassFilter.java
index 0f3eaa52e..7cdf1e00f 100644
--- a/src/main/java/org/redkale/boot/ClassFilter.java
+++ b/src/main/java/org/redkale/boot/ClassFilter.java
@@ -6,7 +6,7 @@
package org.redkale.boot;
import java.io.*;
-import java.lang.annotation.*;
+import java.lang.annotation.Annotation;
import java.lang.reflect.Modifier;
import java.net.*;
import java.nio.charset.StandardCharsets;
@@ -15,10 +15,11 @@ import java.util.concurrent.*;
import java.util.function.Predicate;
import java.util.jar.*;
import java.util.logging.*;
-import java.util.regex.*;
-import javax.annotation.Priority;
-import org.redkale.util.*;
+import java.util.regex.Pattern;
+import org.redkale.annotation.AutoLoad;
+import org.redkale.annotation.*;
import org.redkale.util.AnyValue.DefaultAnyValue;
+import org.redkale.util.*;
/**
* class过滤器, 符合条件的class会保留下来存入FilterEntry。
@@ -164,10 +165,10 @@ public final class ClassFilter
diff --git a/src/main/java/org/redkale/boot/NodeHttpServer.java b/src/main/java/org/redkale/boot/NodeHttpServer.java
index 9dd477743..3766fe9c3 100644
--- a/src/main/java/org/redkale/boot/NodeHttpServer.java
+++ b/src/main/java/org/redkale/boot/NodeHttpServer.java
@@ -12,7 +12,7 @@ import java.util.*;
import java.util.concurrent.CountDownLatch;
import java.util.logging.Level;
import java.util.stream.Stream;
-import javax.annotation.*;
+import org.redkale.annotation.*;
import static org.redkale.boot.Application.RESNAME_SNCP_ADDR;
import org.redkale.boot.ClassFilter.FilterEntry;
import org.redkale.cluster.ClusterAgent;
@@ -20,7 +20,7 @@ import org.redkale.mq.MessageAgent;
import org.redkale.net.*;
import org.redkale.net.http.*;
import org.redkale.net.sncp.Sncp;
-import org.redkale.service.*;
+import org.redkale.service.Service;
import org.redkale.util.AnyValue.DefaultAnyValue;
import org.redkale.util.*;
import org.redkale.watch.*;
@@ -104,7 +104,7 @@ public class NodeHttpServer extends NodeServer {
final ResourceFactory regFactory = application.getResourceFactory();
resourceFactory.register((ResourceFactory rf, String srcResourceName, final Object srcObj, final String resourceName, Field field, Object attachment) -> { //主要用于单点的服务
try {
- if (field.getAnnotation(Resource.class) == null) return null;
+ if (field.getAnnotation(Resource.class) == null && field.getAnnotation(javax.annotation.Resource.class) == null) return null;
if (!(srcObj instanceof WebSocketServlet)) return null;
ResourceTypeLoader loader = null;
ResourceFactory sncpResFactory = null;
@@ -114,9 +114,14 @@ public class NodeHttpServer extends NodeServer {
loader = sncpResFactory.findTypeLoader(WebSocketNode.class, field);
if (loader != null) break;
}
- if (loader != null) loader.load(sncpResFactory, srcResourceName, srcObj, resourceName, field, attachment);
+ Service nodeService = null;
+ if (loader != null) {
+ nodeService = (Service) loader.load(sncpResFactory, srcResourceName, srcObj, resourceName, field, attachment);
+ }
synchronized (regFactory) {
- Service nodeService = (Service) rf.find(resourceName, WebSocketNode.class);
+ if (nodeService == null) {
+ nodeService = (Service) rf.find(resourceName, WebSocketNode.class);
+ }
if (sncpResFactory != null && resourceFactory.find(RESNAME_SNCP_ADDR, String.class) == null) {
resourceFactory.register(RESNAME_SNCP_ADDR, InetSocketAddress.class, sncpResFactory.find(RESNAME_SNCP_ADDR, InetSocketAddress.class));
resourceFactory.register(RESNAME_SNCP_ADDR, SocketAddress.class, sncpResFactory.find(RESNAME_SNCP_ADDR, SocketAddress.class));
@@ -126,6 +131,7 @@ public class NodeHttpServer extends NodeServer {
MessageAgent messageAgent = null;
try {
Field c = WebSocketServlet.class.getDeclaredField("messageAgent");
+ RedkaleClassLoader.putReflectionField("messageAgent", c);
c.setAccessible(true);
messageAgent = (MessageAgent) c.get(srcObj);
} catch (Exception ex) {
diff --git a/src/main/java/org/redkale/boot/NodeServer.java b/src/main/java/org/redkale/boot/NodeServer.java
index 0d4cdefb1..9f5417cb2 100644
--- a/src/main/java/org/redkale/boot/NodeServer.java
+++ b/src/main/java/org/redkale/boot/NodeServer.java
@@ -5,22 +5,23 @@
*/
package org.redkale.boot;
-import org.redkale.cluster.ClusterAgent;
-import org.redkale.mq.MessageAgent;
-import org.redkale.util.RedkaleClassLoader;
import java.io.*;
import java.lang.annotation.Annotation;
import java.lang.reflect.*;
import java.net.*;
-import java.nio.file.*;
+import java.nio.file.Path;
import java.util.*;
-import java.util.concurrent.*;
+import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicInteger;
-import java.util.function.*;
+import java.util.function.BiConsumer;
import java.util.logging.*;
-import javax.annotation.*;
+import org.redkale.annotation.AutoLoad;
+import org.redkale.annotation.Command;
+import org.redkale.annotation.*;
import static org.redkale.boot.Application.*;
import org.redkale.boot.ClassFilter.FilterEntry;
+import org.redkale.cluster.ClusterAgent;
+import org.redkale.mq.MessageAgent;
import org.redkale.net.Filter;
import org.redkale.net.*;
import org.redkale.net.http.*;
@@ -215,18 +216,25 @@ public abstract class NodeServer {
//------------------------------------- 注册 Resource --------------------------------------------------------
resourceFactory.register((ResourceFactory rf, String srcResourceName, final Object srcObj, String resourceName, Field field, final Object attachment) -> {
try {
+ String resName = null;
Resource res = field.getAnnotation(Resource.class);
- if (res == null || !res.name().startsWith("properties.")) return null;
+ if (res != null) {
+ resName = res.name();
+ } else {
+ javax.annotation.Resource res2 = field.getAnnotation(javax.annotation.Resource.class);
+ if (res2 != null) resName = res2.name();
+ }
+ if (resName == null || !resName.startsWith("properties.")) return null;
if ((srcObj instanceof Service) && Sncp.isRemote((Service) srcObj)) return null; //远程模式不得注入 DataSource
Class type = field.getType();
if (type != AnyValue.class && type != AnyValue[].class) return null;
Object resource = null;
final AnyValue properties = application.getAppConfig().getAnyValue("properties");
if (properties != null && type == AnyValue.class) {
- resource = properties.getAnyValue(res.name().substring("properties.".length()));
+ resource = properties.getAnyValue(resName.substring("properties.".length()));
appResFactory.register(resourceName, AnyValue.class, resource);
} else if (properties != null && type == AnyValue[].class) {
- resource = properties.getAnyValues(res.name().substring("properties.".length()));
+ resource = properties.getAnyValues(resName.substring("properties.".length()));
appResFactory.register(resourceName, AnyValue[].class, resource);
}
field.set(srcObj, resource);
@@ -241,13 +249,17 @@ public abstract class NodeServer {
resourceFactory.register((ResourceFactory rf, String srcResourceName, final Object srcObj, String resourceName, Field field, final Object attachment) -> {
Class
diff --git a/src/main/java/org/redkale/net/AsyncIOGroup.java b/src/main/java/org/redkale/net/AsyncIOGroup.java
index 71178d969..8977879fb 100644
--- a/src/main/java/org/redkale/net/AsyncIOGroup.java
+++ b/src/main/java/org/redkale/net/AsyncIOGroup.java
@@ -11,6 +11,8 @@ import java.nio.ByteBuffer;
import java.nio.channels.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.*;
+
+import org.redkale.annotation.ResourceType;
import org.redkale.util.*;
/**
diff --git a/src/main/java/org/redkale/net/Filter.java b/src/main/java/org/redkale/net/Filter.java
index 562ca4251..dbe9ce6b2 100644
--- a/src/main/java/org/redkale/net/Filter.java
+++ b/src/main/java/org/redkale/net/Filter.java
@@ -6,7 +6,7 @@
package org.redkale.net;
import java.io.IOException;
-import javax.annotation.Priority;
+import org.redkale.annotation.Priority;
import org.redkale.util.*;
/**
diff --git a/src/main/java/org/redkale/net/ProtocolServer.java b/src/main/java/org/redkale/net/ProtocolServer.java
index 47e4fbd8e..3e043c8b5 100644
--- a/src/main/java/org/redkale/net/ProtocolServer.java
+++ b/src/main/java/org/redkale/net/ProtocolServer.java
@@ -8,7 +8,7 @@ package org.redkale.net;
import java.io.IOException;
import java.net.*;
import java.util.*;
-import javax.annotation.Resource;
+import org.redkale.annotation.Resource;
import org.redkale.boot.Application;
import org.redkale.util.AnyValue;
diff --git a/src/main/java/org/redkale/net/Transport.java b/src/main/java/org/redkale/net/Transport.java
index d26ebfcdd..4e7bd2d8e 100644
--- a/src/main/java/org/redkale/net/Transport.java
+++ b/src/main/java/org/redkale/net/Transport.java
@@ -16,6 +16,8 @@ import java.util.concurrent.atomic.*;
import java.util.function.Supplier;
import java.util.logging.Level;
import javax.net.ssl.SSLContext;
+
+import org.redkale.annotation.ConstructorParameters;
import org.redkale.convert.*;
import org.redkale.convert.json.JsonConvert;
import org.redkale.util.*;
diff --git a/src/main/java/org/redkale/net/TransportFactory.java b/src/main/java/org/redkale/net/TransportFactory.java
index 4bdd9c839..085ff11d0 100644
--- a/src/main/java/org/redkale/net/TransportFactory.java
+++ b/src/main/java/org/redkale/net/TransportFactory.java
@@ -14,6 +14,8 @@ import java.util.concurrent.*;
import java.util.logging.*;
import java.util.stream.Collectors;
import javax.net.ssl.SSLContext;
+
+import org.redkale.annotation.Comment;
import org.redkale.service.Service;
import org.redkale.util.*;
diff --git a/src/main/java/org/redkale/net/http/HttpContext.java b/src/main/java/org/redkale/net/http/HttpContext.java
index f7622eb7d..6c2d02c88 100644
--- a/src/main/java/org/redkale/net/http/HttpContext.java
+++ b/src/main/java/org/redkale/net/http/HttpContext.java
@@ -5,6 +5,7 @@
*/
package org.redkale.net.http;
+import org.redkale.annotation.ConstructorParameters;
import org.redkale.asm.MethodDebugVisitor;
import java.nio.channels.CompletionHandler;
import java.security.*;
diff --git a/src/main/java/org/redkale/net/http/HttpRequest.java b/src/main/java/org/redkale/net/http/HttpRequest.java
index 5dc58b4f4..72007c8f9 100644
--- a/src/main/java/org/redkale/net/http/HttpRequest.java
+++ b/src/main/java/org/redkale/net/http/HttpRequest.java
@@ -14,6 +14,8 @@ import java.nio.charset.*;
import java.util.*;
import java.util.function.Supplier;
import java.util.logging.Level;
+
+import org.redkale.annotation.Comment;
import org.redkale.convert.*;
import org.redkale.convert.json.JsonConvert;
import org.redkale.net.*;
diff --git a/src/main/java/org/redkale/net/http/HttpScope.java b/src/main/java/org/redkale/net/http/HttpScope.java
index 1203cbdda..507a61f5e 100644
--- a/src/main/java/org/redkale/net/http/HttpScope.java
+++ b/src/main/java/org/redkale/net/http/HttpScope.java
@@ -11,7 +11,7 @@ import java.net.HttpCookie;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.function.*;
-import javax.persistence.Transient;
+import org.redkale.persistence.Transient;
import org.redkale.convert.*;
import org.redkale.convert.json.JsonConvert;
import org.redkale.util.TypeToken;
diff --git a/src/main/java/org/redkale/net/http/HttpSimpleRequest.java b/src/main/java/org/redkale/net/http/HttpSimpleRequest.java
index 3ae4b15c6..77796ee2f 100644
--- a/src/main/java/org/redkale/net/http/HttpSimpleRequest.java
+++ b/src/main/java/org/redkale/net/http/HttpSimpleRequest.java
@@ -10,6 +10,8 @@ import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
+
+import org.redkale.annotation.Comment;
import org.redkale.convert.*;
import org.redkale.convert.json.JsonConvert;
import org.redkale.util.*;
diff --git a/src/main/java/org/redkale/net/http/Rest.java b/src/main/java/org/redkale/net/http/Rest.java
index 135d89086..5173e89da 100644
--- a/src/main/java/org/redkale/net/http/Rest.java
+++ b/src/main/java/org/redkale/net/http/Rest.java
@@ -5,19 +5,19 @@
*/
package org.redkale.net.http;
-import org.redkale.asm.MethodDebugVisitor;
import java.io.*;
-import java.lang.annotation.*;
-import static java.lang.annotation.ElementType.*;
+import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.*;
import java.lang.reflect.*;
import java.net.InetSocketAddress;
import java.nio.channels.CompletionHandler;
import java.util.*;
-import java.util.concurrent.*;
-import javax.annotation.Resource;
-import org.redkale.asm.*;
+import java.util.concurrent.CompletionStage;
+import org.redkale.annotation.Comment;
+import org.redkale.annotation.*;
import static org.redkale.asm.ClassWriter.COMPUTE_FRAMES;
+import org.redkale.asm.*;
import static org.redkale.asm.Opcodes.*;
import org.redkale.asm.Type;
import org.redkale.convert.*;
@@ -26,8 +26,8 @@ import org.redkale.mq.*;
import org.redkale.net.*;
import org.redkale.net.sncp.Sncp;
import org.redkale.service.*;
-import org.redkale.util.*;
import org.redkale.source.Flipper;
+import org.redkale.util.*;
/**
*
@@ -313,7 +313,7 @@ public final class Rest {
Class clzz = webSocketType;
do {
for (Field field : clzz.getDeclaredFields()) {
- if (field.getAnnotation(Resource.class) == null) continue;
+ if (field.getAnnotation(Resource.class) == null && field.getAnnotation(javax.annotation.Resource.class) == null) continue;
if (resourcesFieldNameSet.contains(field.getName())) continue;
if (Modifier.isStatic(field.getModifiers())) {
throw new RuntimeException(field + " cannot static on createRestWebSocketServlet");
@@ -478,11 +478,13 @@ public final class Rest {
for (int i = 0; i < resourcesFields.size(); i++) {
Field field = resourcesFields.get(i);
Resource res = field.getAnnotation(Resource.class);
+ javax.annotation.Resource res2 = field.getAnnotation(javax.annotation.Resource.class);
java.lang.reflect.Type fieldType = field.getGenericType();
fv = cw.visitField(ACC_PRIVATE, "_redkale_resource_" + i, Type.getDescriptor(field.getType()), fieldType == field.getType() ? null : Utility.getTypeDescriptor(fieldType), null);
{
av0 = fv.visitAnnotation(resDesc, true);
- av0.visit("name", res.name());
+ av0.visit("name", res != null ? res.name() : res2.name());
+ av0.visit("required", res != null ? res.required() : false);
av0.visitEnd();
}
fv.visitEnd();
diff --git a/src/main/java/org/redkale/net/http/WebSocket.java b/src/main/java/org/redkale/net/http/WebSocket.java
index 277bba952..04e596d1a 100644
--- a/src/main/java/org/redkale/net/http/WebSocket.java
+++ b/src/main/java/org/redkale/net/http/WebSocket.java
@@ -18,7 +18,7 @@ import java.util.stream.Stream;
import java.util.zip.*;
import org.redkale.convert.Convert;
import org.redkale.net.AsyncConnection;
-import org.redkale.util.Comment;
+import org.redkale.annotation.Comment;
/**
*
+ * The mapped column for the primary key of the entity is assumed
+ * to be the primary key of the primary table. If no
+ * Note that it is not necessary to specify an index for a primary key,
+ * as the primary key index will be created automatically.
+ *
+ *
+ * The syntax of the
+ * If
+ * 详情见: https://redkale.org
+ *
+ * @author zhangjx
+ * @since 2.4.0
+ */
+@Target({FIELD})
+@Retention(RUNTIME)
+public @interface SearchColumn {
+
+ //高亮显示参数
+ public static class HighLights {
+
+ public static final String HIGHLIGHT_NAME_ID = "#[id]";
+
+ public static final String HIGHLIGHT_NAME_INDEX = "#[index]";
+
+ }
+
+ /**
+ * 是否全文搜索
+ *
+ * @return boolean
+ */
+ boolean text() default false;
+
+ /**
+ * 高亮对应的Column.name字段名,被标记的字段为虚拟字段,不会映射表中的字段
+ * If no
+ * Defaults to the entity name.
+ *
+ * @return String
+ */
+ String name() default "";
+
+ /** (Optional) The catalog of the table.
+ *
+ * Defaults to the default catalog.
+ *
+ * @return String
+ */
+ String catalog() default "";
+
+ /**
+ * (Optional) Unique constraints that are to be placed on
+ * the table. These are only used if table generation is in
+ * effect. These constraints apply in addition to any constraints
+ * specified by the
+ * Defaults to no additional constraints.
+ * @return UniqueConstraint[]
+ */
+ UniqueConstraint[] uniqueConstraints() default {};
+
+ /**
+ * (Optional) Indexes for the table. These are only used if
+ * table generation is in effect. Note that it is not necessary
+ * to specify an index for a primary key, as the primary key
+ * index will be created automatically.
+ *
+ * @return indexes
+ * @since Java Persistence 2.1
+ */
+ Index[] indexes() default {};
+
+ /**
+ * comment
+ *
+ * @return String
+ */
+ String comment() default "";
+
+}
diff --git a/src/main/java/org/redkale/persistence/Transient.java b/src/main/java/org/redkale/persistence/Transient.java
new file mode 100644
index 000000000..efcc9e844
--- /dev/null
+++ b/src/main/java/org/redkale/persistence/Transient.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright (c) 2008 - 2013 Oracle Corporation. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
+ * which accompanies this distribution.
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Eclipse Distribution License is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * Contributors:
+ * Linda DeMichiel - Java Persistence 2.1
+ * Linda DeMichiel - Java Persistence 2.0
+ *
+ ******************************************************************************/
+package org.redkale.persistence;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * Specifies that the property or field is not persistent. It is used
+ * to annotate a property or field of an entity class, mapped
+ * superclass, or embeddable class.
+ *
+ *
+ * 详情见: https://redkale.org
+ *
+ * @author zhangjx
+ */
+@Documented
+@Target(TYPE)
+@Retention(RUNTIME)
+public @interface VirtualEntity {
+
+ /**
+ * DataSource是否直接返回对象的真实引用, 而不是copy一份
+ *
+ * @return boolean
+ */
+ boolean direct() default false;
+
+ /**
+ * 初始化时数据的加载器
+ *
+ * @return Class
+ */
+ Class extends BiFunction
* 详情见: https://redkale.org
diff --git a/src/main/java/org/redkale/source/VirtualEntity.java b/src/main/java/org/redkale/source/VirtualEntity.java
index 344b0748c..68915cecf 100644
--- a/src/main/java/org/redkale/source/VirtualEntity.java
+++ b/src/main/java/org/redkale/source/VirtualEntity.java
@@ -8,9 +8,9 @@ package org.redkale.source;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.*;
-import java.util.*;
+import java.util.List;
import java.util.concurrent.CompletableFuture;
-import java.util.function.*;
+import java.util.function.BiFunction;
/**
* VirtualEntity表示虚拟的数据实体类, 通常Entity都会映射到数据库中的某个表,而标记为@VirtualEntity的Entity类只存在EntityCache中
@@ -19,7 +19,9 @@ import java.util.function.*;
* 详情见: https://redkale.org
*
* @author zhangjx
+ * @deprecated replaced by org.redkale.persistence.VirtualEntity
*/
+@Deprecated
@Documented
@Target(TYPE)
@Retention(RUNTIME)
diff --git a/src/main/java/org/redkale/util/AnyValue.java b/src/main/java/org/redkale/util/AnyValue.java
index e59a26d82..c81f2d897 100644
--- a/src/main/java/org/redkale/util/AnyValue.java
+++ b/src/main/java/org/redkale/util/AnyValue.java
@@ -9,6 +9,8 @@ import java.io.*;
import java.nio.charset.*;
import java.util.*;
import java.util.function.*;
+
+import org.redkale.annotation.ConstructorParameters;
import org.redkale.convert.ConvertDisabled;
/**
diff --git a/src/main/java/org/redkale/util/AutoLoad.java b/src/main/java/org/redkale/util/AutoLoad.java
index ef0fadf4a..05b900511 100644
--- a/src/main/java/org/redkale/util/AutoLoad.java
+++ b/src/main/java/org/redkale/util/AutoLoad.java
@@ -16,7 +16,9 @@ import java.lang.annotation.*;
*
* 详情见: https://redkale.org
* @author zhangjx
+ * @deprecated replaced by org.redkale.annotation.AutoLoad
*/
+@Deprecated
@Documented
@Target({TYPE})
@Retention(RUNTIME)
diff --git a/src/main/java/org/redkale/util/Bean.java b/src/main/java/org/redkale/util/Bean.java
index 60719440d..539c37e5b 100644
--- a/src/main/java/org/redkale/util/Bean.java
+++ b/src/main/java/org/redkale/util/Bean.java
@@ -14,6 +14,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
*
* @since 2.5.0
*/
+@Deprecated
@Inherited
@Documented
@Target(TYPE)
diff --git a/src/main/java/org/redkale/util/Command.java b/src/main/java/org/redkale/util/Command.java
index 2e06f85ae..59b375be7 100644
--- a/src/main/java/org/redkale/util/Command.java
+++ b/src/main/java/org/redkale/util/Command.java
@@ -19,6 +19,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
*
* @since 2.1.0
*/
+@Deprecated
@Inherited
@Documented
@Target({METHOD})
diff --git a/src/main/java/org/redkale/util/Comment.java b/src/main/java/org/redkale/util/Comment.java
index 0f5f779ee..c83160ea2 100644
--- a/src/main/java/org/redkale/util/Comment.java
+++ b/src/main/java/org/redkale/util/Comment.java
@@ -17,6 +17,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
*
* @author zhangjx
*/
+@Deprecated
@Inherited
@Documented
@Target({TYPE, METHOD, FIELD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE, ANNOTATION_TYPE, TYPE_PARAMETER})
diff --git a/src/main/java/org/redkale/util/ConstructorParameters.java b/src/main/java/org/redkale/util/ConstructorParameters.java
index ab456a138..986bf13b6 100644
--- a/src/main/java/org/redkale/util/ConstructorParameters.java
+++ b/src/main/java/org/redkale/util/ConstructorParameters.java
@@ -5,9 +5,10 @@
*/
package org.redkale.util;
-import java.lang.annotation.*;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.*;
+import static java.lang.annotation.ElementType.*;
/**
* 类似java.beans.ConstructorProperties, 必须配合Creator使用
@@ -16,7 +17,9 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
* 详情见: https://redkale.org
*
* @author zhangjx
+ * @deprecated replaced by org.redkale.annotation.ConstructorParameters
*/
+@Deprecated
@Documented
@Target({METHOD, CONSTRUCTOR})
@Retention(RUNTIME)
diff --git a/src/main/java/org/redkale/util/Creator.java b/src/main/java/org/redkale/util/Creator.java
index c6b075ab2..df22030cb 100644
--- a/src/main/java/org/redkale/util/Creator.java
+++ b/src/main/java/org/redkale/util/Creator.java
@@ -13,6 +13,8 @@ import java.util.concurrent.*;
import java.util.function.*;
import java.util.logging.*;
import java.util.stream.Stream;
+
+import org.redkale.annotation.ConstructorParameters;
import org.redkale.asm.*;
import org.redkale.asm.Type;
import static org.redkale.asm.Opcodes.*;
diff --git a/src/main/java/org/redkale/util/InstanceProvider.java b/src/main/java/org/redkale/util/InstanceProvider.java
index 8c05fa724..bd62b6182 100644
--- a/src/main/java/org/redkale/util/InstanceProvider.java
+++ b/src/main/java/org/redkale/util/InstanceProvider.java
@@ -3,7 +3,7 @@
package org.redkale.util;
import java.util.*;
-import javax.annotation.Priority;
+import org.redkale.annotation.Priority;
/**
* 配置源Agent的Provider
diff --git a/src/main/java/org/redkale/util/LogExcludeLevel.java b/src/main/java/org/redkale/util/LogExcludeLevel.java
index 25c022932..53ad43d29 100644
--- a/src/main/java/org/redkale/util/LogExcludeLevel.java
+++ b/src/main/java/org/redkale/util/LogExcludeLevel.java
@@ -26,6 +26,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
*
* @author zhangjx
*/
+@Deprecated
@Documented
@Target({TYPE})
@Retention(RUNTIME)
diff --git a/src/main/java/org/redkale/util/LogLevel.java b/src/main/java/org/redkale/util/LogLevel.java
index 050e073af..879c07a5f 100644
--- a/src/main/java/org/redkale/util/LogLevel.java
+++ b/src/main/java/org/redkale/util/LogLevel.java
@@ -17,6 +17,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
*
* @author zhangjx
*/
+@Deprecated
@Documented
@Target({TYPE})
@Retention(RUNTIME)
diff --git a/src/main/java/org/redkale/util/ResourceEvent.java b/src/main/java/org/redkale/util/ResourceEvent.java
index e1c5e43d0..6694966e3 100644
--- a/src/main/java/org/redkale/util/ResourceEvent.java
+++ b/src/main/java/org/redkale/util/ResourceEvent.java
@@ -2,6 +2,8 @@
*/
package org.redkale.util;
+import org.redkale.annotation.ConstructorParameters;
+
import java.util.*;
import java.util.function.Predicate;
import java.util.regex.Pattern;
diff --git a/src/main/java/org/redkale/util/ResourceFactory.java b/src/main/java/org/redkale/util/ResourceFactory.java
index 4c2f30e05..23eb0df34 100644
--- a/src/main/java/org/redkale/util/ResourceFactory.java
+++ b/src/main/java/org/redkale/util/ResourceFactory.java
@@ -14,7 +14,9 @@ import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.*;
import java.util.logging.*;
-import javax.annotation.Resource;
+import org.redkale.annotation.*;
+import org.redkale.annotation.ResourceListener;
+import org.redkale.annotation.ResourceType;
import org.redkale.convert.*;
/**
@@ -127,7 +129,9 @@ public final class ResourceFactory {
public static Class getResourceType(Type type) {
Class> clazz = TypeToken.typeToClass(type);
ResourceType rt = clazz.getAnnotation(ResourceType.class);
- return rt == null ? clazz : rt.value();
+ if (rt != null) return rt.value();
+ org.redkale.util.ResourceType rt2 = clazz.getAnnotation(org.redkale.util.ResourceType.class);
+ return rt2 == null ? clazz : rt2.value();
}
/**
@@ -370,12 +374,22 @@ public final class ResourceFactory {
public A register(final boolean autoSync, final String name, final A val) {
checkResourceName(name);
final Class> claz = val.getClass();
+
+ Class rt = null;
ResourceType rtype = claz.getAnnotation(ResourceType.class);
- if (rtype == null) {
+ if (rtype != null) {
+ rt = rtype.value();
+ } else {
+ org.redkale.util.ResourceType rtype2 = claz.getAnnotation(org.redkale.util.ResourceType.class);
+ if (rtype2 != null) {
+ rt = rtype2.value();
+ }
+ }
+ if (rt == null) {
return (A) register(autoSync, name, claz, val);
} else {
A old = null;
- A t = (A) register(autoSync, name, rtype.value(), val);
+ A t = (A) register(autoSync, name, rt, val);
if (t != null) old = t;
return old;
}
@@ -693,8 +707,9 @@ public final class ResourceFactory {
if (Modifier.isStatic(field.getModifiers())) continue;
field.setAccessible(true);
final Class classType = field.getType();
- Resource rc = field.getAnnotation(Resource.class);
- if (rc == null) { //深度注入
+ Resource rc1 = field.getAnnotation(Resource.class);
+ javax.annotation.Resource rc2 = field.getAnnotation(javax.annotation.Resource.class);
+ if (rc1 == null && rc2 == null) { //深度注入
if (Convert.class.isAssignableFrom(classType)) continue;
if (ConvertFactory.class.isAssignableFrom(classType)) continue;
if (ResourceFactory.class.isAssignableFrom(classType)) continue;
@@ -726,10 +741,11 @@ public final class ResourceFactory {
final Type gencType = TypeToken.containsUnknownType(field.getGenericType())
? TypeToken.getGenericType(field.getGenericType(), srcObj.getClass()) : field.getGenericType();
if (consumer != null) consumer.accept(srcObj, field);
- String tname = rc.name();
+ String tname = rc1 == null ? rc2.name() : rc1.name();
if (tname.contains(RESOURCE_PARENT_NAME)) {
- Resource res = srcObj.getClass().getAnnotation(Resource.class);
- String presname = res == null ? srcResourceName : res.name();
+ Resource res1 = srcObj.getClass().getAnnotation(Resource.class);
+ javax.annotation.Resource res2 = srcObj.getClass().getAnnotation(javax.annotation.Resource.class);
+ String presname = res1 == null ? (res2 == null ? srcResourceName : res2.name()) : res1.name();
if (presname == null) {
if (srcObj instanceof Resourcable) {
tname = tname.replace(RESOURCE_PARENT_NAME, ((Resourcable) srcObj).resourceName());
@@ -830,7 +846,7 @@ public final class ResourceFactory {
}
}
if (rs != null) field.set(srcObj, rs);
- if (rs == null && !skipCheckRequired && rc.required()) {
+ if (rs == null && !skipCheckRequired && rc1 != null && rc1.required()) {
throw new ResourceInjectException("resource(type=" + field.getType().getSimpleName() + ".class, field=" + field.getName() + ", name='" + rcname + "') must exists in " + srcObj.getClass().getName());
}
}
@@ -1022,11 +1038,12 @@ public final class ResourceFactory {
RedkaleClassLoader.putReflectionDeclaredMethods(loop.getName());
for (Method method : loop.getDeclaredMethods()) {
ResourceListener rl = method.getAnnotation(ResourceListener.class);
- if (rl == null) continue;
+ org.redkale.util.ResourceListener rl2 = method.getAnnotation(org.redkale.util.ResourceListener.class);
+ if (rl == null && rl2 == null) continue;
if (method.getParameterCount() == 1 && method.getParameterTypes()[0] == ResourceEvent[].class) {
m = method;
m.setAccessible(true);
- diff.set(rl.different());
+ diff.set(rl != null ? rl.different() : rl2.different());
RedkaleClassLoader.putReflectionMethod(loop.getName(), method);
break;
} else {
diff --git a/src/main/java/org/redkale/util/ResourceListener.java b/src/main/java/org/redkale/util/ResourceListener.java
index fcf199e23..328376c7c 100644
--- a/src/main/java/org/redkale/util/ResourceListener.java
+++ b/src/main/java/org/redkale/util/ResourceListener.java
@@ -5,9 +5,9 @@
*/
package org.redkale.util;
-import java.lang.annotation.*;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.*;
/**
* @Resource资源被更新时的监听事件, 本注解只能标记在方法参数为ResourceEvent[]上
* 详情见: https://redkale.org
*
* @author zhangjx
+ *
+ * @deprecated replaced by org.redkale.annotation.ResourceType
*/
+@Deprecated
@Inherited
@Documented
@Target({TYPE})
diff --git a/src/main/java/org/redkale/util/Version.java b/src/main/java/org/redkale/util/Version.java
index 2165d3fc7..6a7acaec1 100644
--- a/src/main/java/org/redkale/util/Version.java
+++ b/src/main/java/org/redkale/util/Version.java
@@ -5,9 +5,10 @@
*/
package org.redkale.util;
-import java.lang.annotation.*;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.*;
+import static java.lang.annotation.ElementType.*;
/**
* 版本, 可用于标记Service的接口版本变化
@@ -18,7 +19,10 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
* @since 2.1.0
*
* @author zhangjx
+ *
+ * @deprecated 暂不实现
*/
+@Deprecated
@Inherited
@Documented
@Target({TYPE, METHOD})
diff --git a/src/test/java/org/redkale/test/convert/BsonMainTest.java b/src/test/java/org/redkale/test/convert/BsonMainTest.java
index 11db6dff5..b7de20e87 100644
--- a/src/test/java/org/redkale/test/convert/BsonMainTest.java
+++ b/src/test/java/org/redkale/test/convert/BsonMainTest.java
@@ -9,14 +9,16 @@ import java.io.*;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
+import org.redkale.annotation.ConstructorParameters;
import org.redkale.convert.bson.BsonByteBufferWriter;
import org.redkale.convert.bson.BsonFactory;
+import org.redkale.persistence.Id;
+import org.redkale.persistence.Transient;
import org.redkale.util.Utility;
import org.redkale.convert.bson.BsonConvert;
import java.nio.*;
import java.util.*;
-import javax.persistence.*;
import org.redkale.convert.json.*;
import org.redkale.util.*;
diff --git a/src/test/java/org/redkale/test/convert/Fortune.java b/src/test/java/org/redkale/test/convert/Fortune.java
index 5f94b545e..355c31f83 100644
--- a/src/test/java/org/redkale/test/convert/Fortune.java
+++ b/src/test/java/org/redkale/test/convert/Fortune.java
@@ -5,7 +5,7 @@
*/
package org.redkale.test.convert;
-import javax.persistence.Id;
+import org.redkale.persistence.Id;
import org.redkale.convert.json.JsonConvert;
/**
diff --git a/src/test/java/org/redkale/test/convert/World.java b/src/test/java/org/redkale/test/convert/World.java
index d294ca4df..3cf9f474b 100644
--- a/src/test/java/org/redkale/test/convert/World.java
+++ b/src/test/java/org/redkale/test/convert/World.java
@@ -5,7 +5,7 @@
*/
package org.redkale.test.convert;
-import javax.persistence.Id;
+import org.redkale.persistence.Id;
import org.redkale.convert.json.JsonConvert;
/**
diff --git a/src/test/java/org/redkale/test/rest/HelloEntity.java b/src/test/java/org/redkale/test/rest/HelloEntity.java
index 930522d67..f181f9fc6 100644
--- a/src/test/java/org/redkale/test/rest/HelloEntity.java
+++ b/src/test/java/org/redkale/test/rest/HelloEntity.java
@@ -1,10 +1,10 @@
package org.redkale.test.rest;
import java.util.Map;
-import javax.persistence.Id;
+import org.redkale.persistence.Id;
import org.redkale.convert.json.JsonFactory;
import org.redkale.net.http.*;
-import org.redkale.source.VirtualEntity;
+import org.redkale.persistence.VirtualEntity;
@VirtualEntity
public class HelloEntity {
diff --git a/src/test/java/org/redkale/test/rest/HelloService.java b/src/test/java/org/redkale/test/rest/HelloService.java
index acd240c3f..c229c6a06 100644
--- a/src/test/java/org/redkale/test/rest/HelloService.java
+++ b/src/test/java/org/redkale/test/rest/HelloService.java
@@ -3,7 +3,7 @@ package org.redkale.test.rest;
import java.nio.channels.CompletionHandler;
import java.util.*;
import java.util.concurrent.CompletableFuture;
-import javax.annotation.Resource;
+import org.redkale.annotation.Resource;
import org.redkale.net.http.*;
import org.redkale.service.*;
diff --git a/src/test/java/org/redkale/test/rest/HelloService2.java b/src/test/java/org/redkale/test/rest/HelloService2.java
index b7f313765..a6643affb 100644
--- a/src/test/java/org/redkale/test/rest/HelloService2.java
+++ b/src/test/java/org/redkale/test/rest/HelloService2.java
@@ -5,7 +5,7 @@
*/
package org.redkale.test.rest;
-import javax.annotation.Resource;
+import org.redkale.annotation.Resource;
import org.redkale.net.http.*;
import org.redkale.service.*;
import org.redkale.source.*;
diff --git a/src/test/java/org/redkale/test/rest/SimpleRestServlet.java b/src/test/java/org/redkale/test/rest/SimpleRestServlet.java
index 0a7ca82a8..5e7502d4b 100644
--- a/src/test/java/org/redkale/test/rest/SimpleRestServlet.java
+++ b/src/test/java/org/redkale/test/rest/SimpleRestServlet.java
@@ -1,7 +1,7 @@
package org.redkale.test.rest;
import java.io.IOException;
-import javax.annotation.Resource;
+import org.redkale.annotation.Resource;
import org.redkale.net.http.*;
import org.redkale.service.RetResult;
diff --git a/src/test/java/org/redkale/test/rest/UserInfo.java b/src/test/java/org/redkale/test/rest/UserInfo.java
index 5ce449524..fe118a701 100644
--- a/src/test/java/org/redkale/test/rest/UserInfo.java
+++ b/src/test/java/org/redkale/test/rest/UserInfo.java
@@ -1,6 +1,6 @@
package org.redkale.test.rest;
-import javax.persistence.Id;
+import org.redkale.persistence.Id;
import org.redkale.convert.json.JsonFactory;
/**
diff --git a/src/test/java/org/redkale/test/rest/_DynHelloRestServlet1.java b/src/test/java/org/redkale/test/rest/_DynHelloRestServlet1.java
index b7593a78d..7d39b87c6 100644
--- a/src/test/java/org/redkale/test/rest/_DynHelloRestServlet1.java
+++ b/src/test/java/org/redkale/test/rest/_DynHelloRestServlet1.java
@@ -2,7 +2,7 @@ package org.redkale.test.rest;
import java.io.IOException;
import java.util.*;
-import javax.annotation.Resource;
+import org.redkale.annotation.Resource;
import org.redkale.net.http.*;
import org.redkale.service.RetResult;
import org.redkale.source.Flipper;
diff --git a/src/test/java/org/redkale/test/rest/_DynHelloRestServlet2.java b/src/test/java/org/redkale/test/rest/_DynHelloRestServlet2.java
index 1f0acc1b9..2f0f7900b 100644
--- a/src/test/java/org/redkale/test/rest/_DynHelloRestServlet2.java
+++ b/src/test/java/org/redkale/test/rest/_DynHelloRestServlet2.java
@@ -7,7 +7,7 @@ package org.redkale.test.rest;
import java.io.IOException;
import java.util.Map;
-import javax.annotation.Resource;
+import org.redkale.annotation.Resource;
import org.redkale.net.http.*;
import org.redkale.service.RetResult;
import org.redkale.source.Flipper;
diff --git a/src/test/java/org/redkale/test/service/ABMainService.java b/src/test/java/org/redkale/test/service/ABMainService.java
index f66e5f217..29018bf4c 100644
--- a/src/test/java/org/redkale/test/service/ABMainService.java
+++ b/src/test/java/org/redkale/test/service/ABMainService.java
@@ -12,7 +12,7 @@ import java.nio.channels.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.*;
import java.util.logging.*;
-import javax.annotation.Resource;
+import org.redkale.annotation.Resource;
import org.redkale.convert.bson.BsonConvert;
import org.redkale.convert.json.JsonConvert;
import org.redkale.net.*;
diff --git a/src/test/java/org/redkale/test/service/BCService.java b/src/test/java/org/redkale/test/service/BCService.java
index 94d69d526..e7ee4bb5a 100644
--- a/src/test/java/org/redkale/test/service/BCService.java
+++ b/src/test/java/org/redkale/test/service/BCService.java
@@ -6,7 +6,7 @@
package org.redkale.test.service;
import java.nio.channels.CompletionHandler;
-import javax.annotation.Resource;
+import org.redkale.annotation.Resource;
import org.redkale.service.*;
import org.redkale.util.*;
diff --git a/src/test/java/org/redkale/test/sncp/SncpTestBean.java b/src/test/java/org/redkale/test/sncp/SncpTestBean.java
index 275dc0684..ec9bb1480 100644
--- a/src/test/java/org/redkale/test/sncp/SncpTestBean.java
+++ b/src/test/java/org/redkale/test/sncp/SncpTestBean.java
@@ -6,9 +6,9 @@
package org.redkale.test.sncp;
import org.redkale.convert.bson.BsonFactory;
+import org.redkale.persistence.Id;
import org.redkale.util.Utility;
import org.redkale.source.FilterBean;
-import javax.persistence.*;
import org.redkale.convert.json.*;
/**
diff --git a/src/test/java/org/redkale/test/sncp/SncpTestServiceImpl.java b/src/test/java/org/redkale/test/sncp/SncpTestServiceImpl.java
index e1af13da6..42194be25 100644
--- a/src/test/java/org/redkale/test/sncp/SncpTestServiceImpl.java
+++ b/src/test/java/org/redkale/test/sncp/SncpTestServiceImpl.java
@@ -9,6 +9,8 @@ import java.lang.reflect.Method;
import java.net.InetSocketAddress;
import java.nio.channels.CompletionHandler;
import java.util.concurrent.*;
+
+import org.redkale.annotation.ResourceType;
import org.redkale.net.*;
import org.redkale.net.sncp.*;
import org.redkale.service.*;
diff --git a/src/test/java/org/redkale/test/sncp/_DynLocalSncpTestService.java b/src/test/java/org/redkale/test/sncp/_DynLocalSncpTestService.java
index 1659e2be0..d44b5112b 100644
--- a/src/test/java/org/redkale/test/sncp/_DynLocalSncpTestService.java
+++ b/src/test/java/org/redkale/test/sncp/_DynLocalSncpTestService.java
@@ -6,7 +6,7 @@
package org.redkale.test.sncp;
import org.redkale.net.sncp.*;
-import org.redkale.util.ResourceType;
+import org.redkale.annotation.ResourceType;
/**
*
diff --git a/src/test/java/org/redkale/test/source/CacheTestBean.java b/src/test/java/org/redkale/test/source/CacheTestBean.java
index 40b7abcb8..29725f394 100644
--- a/src/test/java/org/redkale/test/source/CacheTestBean.java
+++ b/src/test/java/org/redkale/test/source/CacheTestBean.java
@@ -9,8 +9,9 @@ import java.lang.reflect.Method;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.function.BiFunction;
-import javax.persistence.Id;
+import org.redkale.persistence.Id;
import org.redkale.convert.json.JsonConvert;
+import org.redkale.persistence.VirtualEntity;
import org.redkale.source.*;
/**
diff --git a/src/test/java/org/redkale/test/source/FilterNodeTest.java b/src/test/java/org/redkale/test/source/FilterNodeTest.java
index 0a7532fe0..78372ed6f 100644
--- a/src/test/java/org/redkale/test/source/FilterNodeTest.java
+++ b/src/test/java/org/redkale/test/source/FilterNodeTest.java
@@ -5,8 +5,11 @@
*/
package org.redkale.test.source;
+import org.redkale.persistence.Cacheable;
+import org.redkale.persistence.Id;
+import org.redkale.persistence.Transient;
import org.redkale.source.*;
-import org.redkale.util.AutoLoad;
+import org.redkale.annotation.AutoLoad;
import static org.redkale.source.FilterExpress.*;
@@ -14,7 +17,6 @@ import java.lang.reflect.Method;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.function.*;
-import javax.persistence.*;
import org.redkale.convert.json.*;
diff --git a/src/test/java/org/redkale/test/source/JsonRecord.java b/src/test/java/org/redkale/test/source/JsonRecord.java
index 2e97218ed..4f793a087 100644
--- a/src/test/java/org/redkale/test/source/JsonRecord.java
+++ b/src/test/java/org/redkale/test/source/JsonRecord.java
@@ -7,8 +7,10 @@ package org.redkale.test.source;
import java.io.Serializable;
import java.util.*;
-import javax.persistence.*;
+
import org.redkale.convert.json.JsonConvert;
+import org.redkale.persistence.Column;
+import org.redkale.persistence.Id;
import org.redkale.source.*;
import org.redkale.util.AnyValue.DefaultAnyValue;
diff --git a/src/test/java/org/redkale/test/source/LoginRecord.java b/src/test/java/org/redkale/test/source/LoginRecord.java
index c8498bfdd..762d8cb2d 100644
--- a/src/test/java/org/redkale/test/source/LoginRecord.java
+++ b/src/test/java/org/redkale/test/source/LoginRecord.java
@@ -6,7 +6,10 @@
package org.redkale.test.source;
import java.io.Serializable;
-import javax.persistence.*;
+
+import org.redkale.persistence.Column;
+import org.redkale.source.DistributeTable;
+import org.redkale.persistence.Id;
import org.redkale.source.*;
import org.redkale.util.Utility;
diff --git a/src/test/java/org/redkale/test/source/LoginTestRecord.java b/src/test/java/org/redkale/test/source/LoginTestRecord.java
index 0bc1067a3..9e9ac6fda 100644
--- a/src/test/java/org/redkale/test/source/LoginTestRecord.java
+++ b/src/test/java/org/redkale/test/source/LoginTestRecord.java
@@ -5,8 +5,8 @@
*/
package org.redkale.test.source;
-import javax.persistence.*;
import org.redkale.convert.json.*;
+import org.redkale.persistence.Id;
/**
* CREATE TABLE `LoginTestRecord` (
diff --git a/src/test/java/org/redkale/test/source/LoginUserRecord.java b/src/test/java/org/redkale/test/source/LoginUserRecord.java
index 8ea9006d2..eb5f4541f 100644
--- a/src/test/java/org/redkale/test/source/LoginUserRecord.java
+++ b/src/test/java/org/redkale/test/source/LoginUserRecord.java
@@ -6,7 +6,10 @@
package org.redkale.test.source;
import java.io.Serializable;
-import javax.persistence.*;
+
+import org.redkale.persistence.Column;
+import org.redkale.source.DistributeTable;
+import org.redkale.persistence.Id;
import org.redkale.source.*;
/**
diff --git a/src/test/java/org/redkale/test/source/TestSourceCache.java b/src/test/java/org/redkale/test/source/TestSourceCache.java
index d77e53fec..0d30bd3d3 100644
--- a/src/test/java/org/redkale/test/source/TestSourceCache.java
+++ b/src/test/java/org/redkale/test/source/TestSourceCache.java
@@ -7,7 +7,10 @@ package org.redkale.test.source;
import java.lang.reflect.Method;
import java.util.*;
-import org.redkale.source.VirtualEntity;
+
+import org.redkale.persistence.Cacheable;
+import org.redkale.persistence.Id;
+import org.redkale.persistence.VirtualEntity;
import org.redkale.source.FilterNodeBean;
import org.redkale.source.FilterExpress;
import org.redkale.source.FilterColumn;
@@ -18,7 +21,7 @@ import org.redkale.source.EntityInfo;
import org.redkale.source.FilterNode;
import java.util.concurrent.*;
import java.util.function.BiFunction;
-import javax.persistence.*;
+
import org.redkale.convert.json.*;
import org.redkale.source.*;
diff --git a/src/test/java/org/redkale/test/source/UserDetail.java b/src/test/java/org/redkale/test/source/UserDetail.java
index 3bdd5c6f5..972ad39c6 100644
--- a/src/test/java/org/redkale/test/source/UserDetail.java
+++ b/src/test/java/org/redkale/test/source/UserDetail.java
@@ -6,8 +6,11 @@
package org.redkale.test.source;
import java.io.Serializable;
-import javax.persistence.*;
+
import org.redkale.convert.*;
+import org.redkale.persistence.Column;
+import org.redkale.source.DistributeTable;
+import org.redkale.persistence.Id;
import org.redkale.source.*;
/**
diff --git a/src/test/java/org/redkale/test/util/CreatorRecord.java b/src/test/java/org/redkale/test/util/CreatorRecord.java
index 3b691e35e..de939c24b 100644
--- a/src/test/java/org/redkale/test/util/CreatorRecord.java
+++ b/src/test/java/org/redkale/test/util/CreatorRecord.java
@@ -5,6 +5,7 @@
*/
package org.redkale.test.util;
+import org.redkale.annotation.ConstructorParameters;
import org.redkale.convert.json.*;
import org.redkale.util.*;
diff --git a/src/test/java/org/redkale/test/util/ResourceListenerTest.java b/src/test/java/org/redkale/test/util/ResourceListenerTest.java
index e8aa8af52..e0b0b1877 100644
--- a/src/test/java/org/redkale/test/util/ResourceListenerTest.java
+++ b/src/test/java/org/redkale/test/util/ResourceListenerTest.java
@@ -4,8 +4,9 @@ package org.redkale.test.util;
import java.util.Properties;
import java.util.concurrent.atomic.AtomicInteger;
-import javax.annotation.Resource;
+import org.redkale.annotation.Resource;
import org.junit.jupiter.api.*;
+import org.redkale.annotation.ResourceListener;
import org.redkale.util.*;
/**
diff --git a/src/test/java/org/redkale/test/util/ResourceLoaderTest.java b/src/test/java/org/redkale/test/util/ResourceLoaderTest.java
index fbd9ea7d3..54a73b443 100644
--- a/src/test/java/org/redkale/test/util/ResourceLoaderTest.java
+++ b/src/test/java/org/redkale/test/util/ResourceLoaderTest.java
@@ -2,7 +2,7 @@
*/
package org.redkale.test.util;
-import javax.annotation.Resource;
+import org.redkale.annotation.Resource;
import org.junit.jupiter.api.*;
import org.redkale.convert.json.JsonFactory;
import org.redkale.util.*;
diff --git a/src/test/java/org/redkale/test/util/ResourceTest.java b/src/test/java/org/redkale/test/util/ResourceTest.java
index 1f86d0b44..93f37394d 100644
--- a/src/test/java/org/redkale/test/util/ResourceTest.java
+++ b/src/test/java/org/redkale/test/util/ResourceTest.java
@@ -7,8 +7,10 @@ package org.redkale.test.util;
import java.math.*;
import java.util.Properties;
-import javax.annotation.*;
+import org.redkale.annotation.*;
import org.junit.jupiter.api.Test;
+import org.redkale.annotation.ConstructorParameters;
+import org.redkale.annotation.ResourceListener;
import org.redkale.util.*;
/**
diff --git a/src/test/java/org/redkale/test/websocket/ChatWebSocketServlet.java b/src/test/java/org/redkale/test/websocket/ChatWebSocketServlet.java
index 0bb999e25..e1402ed1d 100644
--- a/src/test/java/org/redkale/test/websocket/ChatWebSocketServlet.java
+++ b/src/test/java/org/redkale/test/websocket/ChatWebSocketServlet.java
@@ -9,7 +9,7 @@ import org.redkale.net.http.WebServlet;
import org.redkale.net.http.WebSocketServlet;
import org.redkale.net.http.WebSocket;
import java.util.concurrent.CompletableFuture;
-import javax.annotation.Resource;
+import org.redkale.annotation.Resource;
import org.redkale.net.http.*;
import org.redkale.test.rest.*;
import org.redkale.util.*;
diff --git a/src/test/java/org/redkale/test/ws/ChatService.java b/src/test/java/org/redkale/test/ws/ChatService.java
index cfb1a1cb6..3714ef803 100644
--- a/src/test/java/org/redkale/test/ws/ChatService.java
+++ b/src/test/java/org/redkale/test/ws/ChatService.java
@@ -8,10 +8,10 @@ package org.redkale.test.ws;
import java.util.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger;
-import javax.annotation.Resource;
+import org.redkale.annotation.Resource;
import org.redkale.net.http.WebSocketNode;
import org.redkale.service.*;
-import org.redkale.util.Comment;
+import org.redkale.annotation.Comment;
/**
*
diff --git a/src/test/java/org/redkale/test/ws/ChatWebSocket.java b/src/test/java/org/redkale/test/ws/ChatWebSocket.java
index 25ba228f4..58f8890ac 100644
--- a/src/test/java/org/redkale/test/ws/ChatWebSocket.java
+++ b/src/test/java/org/redkale/test/ws/ChatWebSocket.java
@@ -7,7 +7,7 @@ package org.redkale.test.ws;
import java.util.*;
import java.util.concurrent.CompletableFuture;
-import javax.annotation.Resource;
+import org.redkale.annotation.Resource;
import org.redkale.net.http.*;
import org.redkale.service.RetResult;
import org.redkale.test.rest.*;
diff --git a/src/test/java/org/redkale/test/wsdync/_DyncChatWebSocketServlet.java b/src/test/java/org/redkale/test/wsdync/_DyncChatWebSocketServlet.java
index 9e1ce6e2e..490425c56 100644
--- a/src/test/java/org/redkale/test/wsdync/_DyncChatWebSocketServlet.java
+++ b/src/test/java/org/redkale/test/wsdync/_DyncChatWebSocketServlet.java
@@ -9,7 +9,7 @@ import java.io.Serializable;
import java.lang.annotation.Annotation;
import java.util.*;
import java.util.function.BiConsumer;
-import javax.annotation.Resource;
+import org.redkale.annotation.Resource;
import org.redkale.convert.ConvertDisabled;
import org.redkale.convert.json.JsonConvert;
import org.redkale.net.http.*;
diff --git a/src/main/java/org/redkale/net/http/WebSocketEngine.java b/src/main/java/org/redkale/net/http/WebSocketEngine.java
index 4d7ccfa56..9f64f312b 100644
--- a/src/main/java/org/redkale/net/http/WebSocketEngine.java
+++ b/src/main/java/org/redkale/net/http/WebSocketEngine.java
@@ -13,6 +13,8 @@ import java.util.concurrent.atomic.*;
import java.util.function.*;
import java.util.logging.*;
import java.util.stream.*;
+
+import org.redkale.annotation.Comment;
import org.redkale.convert.Convert;
import org.redkale.net.Cryptor;
import static org.redkale.net.http.WebSocket.RETCODE_GROUP_EMPTY;
diff --git a/src/main/java/org/redkale/net/http/WebSocketNode.java b/src/main/java/org/redkale/net/http/WebSocketNode.java
index a83faab46..604a366ad 100644
--- a/src/main/java/org/redkale/net/http/WebSocketNode.java
+++ b/src/main/java/org/redkale/net/http/WebSocketNode.java
@@ -5,20 +5,21 @@
*/
package org.redkale.net.http;
-import static org.redkale.net.http.WebSocket.*;
-import java.io.*;
-import java.net.*;
+import java.io.Serializable;
+import java.net.InetSocketAddress;
import java.util.*;
import java.util.concurrent.*;
import java.util.logging.*;
import java.util.stream.*;
-import javax.annotation.*;
-import org.redkale.boot.*;
+import org.redkale.annotation.Comment;
+import org.redkale.annotation.*;
+import org.redkale.boot.Application;
import org.redkale.convert.*;
import org.redkale.convert.json.JsonConvert;
import org.redkale.mq.MessageAgent;
+import static org.redkale.net.http.WebSocket.RETCODE_GROUP_EMPTY;
import org.redkale.service.*;
-import org.redkale.source.*;
+import org.redkale.source.CacheSource;
import org.redkale.util.*;
/**
diff --git a/src/main/java/org/redkale/net/http/WebSocketNodeService.java b/src/main/java/org/redkale/net/http/WebSocketNodeService.java
index 978395485..a1ba87944 100644
--- a/src/main/java/org/redkale/net/http/WebSocketNodeService.java
+++ b/src/main/java/org/redkale/net/http/WebSocketNodeService.java
@@ -7,7 +7,9 @@ import java.util.*;
import java.util.concurrent.*;
import java.util.logging.Level;
import static org.redkale.net.http.WebSocket.RETCODE_GROUP_EMPTY;
-import static org.redkale.net.http.WebSocketNode.WS_SOURCE_KEY_USERID_PREFIX;
+
+import org.redkale.annotation.AutoLoad;
+import org.redkale.annotation.ResourceType;
import org.redkale.service.*;
import org.redkale.util.*;
diff --git a/src/main/java/org/redkale/net/http/WebSocketServlet.java b/src/main/java/org/redkale/net/http/WebSocketServlet.java
index b897cb8e1..e9b29ee66 100644
--- a/src/main/java/org/redkale/net/http/WebSocketServlet.java
+++ b/src/main/java/org/redkale/net/http/WebSocketServlet.java
@@ -16,7 +16,8 @@ import java.util.concurrent.CompletableFuture;
import java.util.function.*;
import java.util.logging.*;
import java.util.zip.*;
-import javax.annotation.*;
+import org.redkale.annotation.*;
+import org.redkale.annotation.Comment;
import org.redkale.boot.Application;
import static org.redkale.boot.Application.RESNAME_SERVER_RESFACTORY;
import org.redkale.convert.Convert;
diff --git a/src/main/java/org/redkale/net/sncp/Sncp.java b/src/main/java/org/redkale/net/sncp/Sncp.java
index 5e91538ca..52c0be489 100644
--- a/src/main/java/org/redkale/net/sncp/Sncp.java
+++ b/src/main/java/org/redkale/net/sncp/Sncp.java
@@ -5,7 +5,6 @@
*/
package org.redkale.net.sncp;
-import org.redkale.asm.MethodDebugVisitor;
import java.lang.annotation.Annotation;
import java.lang.reflect.*;
import java.net.InetSocketAddress;
@@ -13,7 +12,8 @@ import java.nio.ByteBuffer;
import java.nio.channels.CompletionHandler;
import java.security.*;
import java.util.*;
-import javax.annotation.Resource;
+import org.redkale.annotation.*;
+import org.redkale.annotation.ResourceType;
import static org.redkale.asm.ClassWriter.COMPUTE_FRAMES;
import org.redkale.asm.*;
import static org.redkale.asm.Opcodes.*;
@@ -100,25 +100,30 @@ public abstract class Sncp {
public static int getVersion(Service service) {
if (service == null) return -1;
- Version ver = service.getClass().getAnnotation(Version.class);
- return ver == null ? -1 : ver.value();
+ return -1; //暂不实现Version
}
public static String getResourceName(Service service) {
if (service == null) return null;
Resource res = service.getClass().getAnnotation(Resource.class);
- return res == null ? null : res.name();
+ if (res != null) return res.name();
+ javax.annotation.Resource res2 = service.getClass().getAnnotation(javax.annotation.Resource.class);
+ return res2 == null ? null : res2.name();
}
public static Class getServiceType(Service service) {
ResourceType rt = service.getClass().getAnnotation(ResourceType.class);
- return rt == null ? service.getClass() : rt.value();
+ if (rt != null) return rt.value();
+ org.redkale.util.ResourceType rt2 = service.getClass().getAnnotation(org.redkale.util.ResourceType.class);
+ return rt2 == null ? service.getClass() : rt2.value();
}
public static Class getResourceType(Service service) {
if (service == null) return null;
ResourceType type = service.getClass().getAnnotation(ResourceType.class);
- return type == null ? getServiceType(service) : type.value();
+ if (type != null) return type.value();
+ org.redkale.util.ResourceType rt2 = service.getClass().getAnnotation(org.redkale.util.ResourceType.class);
+ return rt2 == null ? getServiceType(service) : rt2.value();
}
public static AnyValue getConf(Service service) {
@@ -327,7 +332,7 @@ public abstract class Sncp {
AnnotationVisitor av0;
cw.visit(V11, ACC_PUBLIC + ACC_FINAL + ACC_SUPER, newDynName, null, supDynName, null);
- {
+ { //给动态生成的Service类标记上Resource
av0 = cw.visitAnnotation(resDesc, true);
av0.visit("name", name);
av0.visitEnd();
@@ -346,7 +351,8 @@ public abstract class Sncp {
{
av0 = cw.visitAnnotation(Type.getDescriptor(ResourceType.class), true);
ResourceType rty = serviceImplClass.getAnnotation(ResourceType.class);
- av0.visit("value", Type.getType(Type.getDescriptor(rty == null ? serviceImplClass : rty.value())));
+ org.redkale.util.ResourceType rty2 = serviceImplClass.getAnnotation(org.redkale.util.ResourceType.class);
+ av0.visit("value", Type.getType(Type.getDescriptor(rty != null ? rty.value() : (rty2 != null ? rty2.value() : serviceImplClass))));
av0.visitEnd();
}
{
@@ -616,7 +622,7 @@ public abstract class Sncp {
AnnotationVisitor av0;
cw.visit(V11, ACC_PUBLIC + ACC_FINAL + ACC_SUPER, newDynName, null, serviceTypeOrImplClass.isInterface() ? "java/lang/Object" : supDynName, serviceTypeOrImplClass.isInterface() ? new String[]{supDynName} : null);
- {
+ { //给动态生成的Service类标记上Resource
av0 = cw.visitAnnotation(resDesc, true);
av0.visit("name", name);
av0.visitEnd();
@@ -624,7 +630,8 @@ public abstract class Sncp {
{
av0 = cw.visitAnnotation(Type.getDescriptor(ResourceType.class), true);
ResourceType rty = serviceTypeOrImplClass.getAnnotation(ResourceType.class);
- av0.visit("value", Type.getType(Type.getDescriptor(rty == null ? serviceTypeOrImplClass : rty.value())));
+ org.redkale.util.ResourceType rty2 = serviceTypeOrImplClass.getAnnotation(org.redkale.util.ResourceType.class);
+ av0.visit("value", Type.getType(Type.getDescriptor(rty != null ? rty.value() : (rty2 != null ? rty2.value() : serviceTypeOrImplClass))));
av0.visitEnd();
}
{
diff --git a/src/main/java/org/redkale/net/sncp/SncpAsyncHandler.java b/src/main/java/org/redkale/net/sncp/SncpAsyncHandler.java
index a79823a45..a48330c77 100644
--- a/src/main/java/org/redkale/net/sncp/SncpAsyncHandler.java
+++ b/src/main/java/org/redkale/net/sncp/SncpAsyncHandler.java
@@ -5,6 +5,7 @@
*/
package org.redkale.net.sncp;
+import org.redkale.annotation.ConstructorParameters;
import org.redkale.asm.MethodDebugVisitor;
import java.nio.channels.CompletionHandler;
import java.util.concurrent.CompletableFuture;
diff --git a/src/main/java/org/redkale/net/sncp/SncpClient.java b/src/main/java/org/redkale/net/sncp/SncpClient.java
index 50709c50a..b584688bf 100644
--- a/src/main/java/org/redkale/net/sncp/SncpClient.java
+++ b/src/main/java/org/redkale/net/sncp/SncpClient.java
@@ -5,15 +5,15 @@
*/
package org.redkale.net.sncp;
-import java.lang.annotation.*;
+import java.lang.annotation.Annotation;
import java.lang.reflect.*;
import java.net.*;
-import java.nio.*;
-import java.nio.channels.*;
+import java.nio.ByteBuffer;
+import java.nio.channels.CompletionHandler;
import java.util.*;
import java.util.concurrent.*;
import java.util.logging.*;
-import javax.annotation.Resource;
+import org.redkale.annotation.Resource;
import org.redkale.convert.bson.*;
import org.redkale.convert.json.*;
import org.redkale.mq.*;
@@ -21,10 +21,8 @@ import org.redkale.net.*;
import static org.redkale.net.sncp.SncpRequest.*;
import static org.redkale.net.sncp.SncpResponse.fillRespHeader;
import org.redkale.service.*;
+import org.redkale.source.*;
import org.redkale.util.*;
-import org.redkale.service.RpcCall;
-import org.redkale.source.CacheSource;
-import org.redkale.source.DataSource;
/**
*
@@ -82,9 +80,8 @@ public final class SncpClient {
this.messageClient = messageAgent == null ? null : messageAgent.getSncpMessageClient();
this.topic = messageAgent == null ? null : messageAgent.generateSncpReqTopic(service);
Class> tn = serviceTypeOrImplClass;
- Version ver = tn.getAnnotation(Version.class);
this.serviceClass = serviceClass;
- this.serviceVersion = ver == null ? 0 : ver.value();
+ this.serviceVersion = 0; //暂不实现Version
this.clientSncpAddress = clientSncpAddress;
this.name = serviceName;
tn = ResourceFactory.getResourceType(tn);
diff --git a/src/main/java/org/redkale/net/sncp/SncpDynServlet.java b/src/main/java/org/redkale/net/sncp/SncpDynServlet.java
index 5b0503c7d..89d6a52e8 100644
--- a/src/main/java/org/redkale/net/sncp/SncpDynServlet.java
+++ b/src/main/java/org/redkale/net/sncp/SncpDynServlet.java
@@ -5,26 +5,24 @@
*/
package org.redkale.net.sncp;
-import org.redkale.asm.MethodDebugVisitor;
-import static org.redkale.net.sncp.SncpRequest.DEFAULT_HEADER;
-import java.io.*;
-import java.lang.annotation.*;
+import java.io.IOException;
+import java.lang.annotation.Annotation;
import java.lang.reflect.*;
import java.nio.channels.CompletionHandler;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.*;
-import javax.annotation.*;
-import org.redkale.asm.*;
+import org.redkale.annotation.Resource;
import static org.redkale.asm.ClassWriter.COMPUTE_FRAMES;
+import org.redkale.asm.*;
import static org.redkale.asm.Opcodes.*;
import org.redkale.asm.Type;
import org.redkale.convert.bson.*;
import org.redkale.net.sncp.SncpAsyncHandler.DefaultSncpAsyncHandler;
+import static org.redkale.net.sncp.SncpRequest.DEFAULT_HEADER;
import org.redkale.service.*;
import org.redkale.util.*;
-import org.redkale.service.RpcCall;
/**
*
diff --git a/src/main/java/org/redkale/persistence/Cacheable.java b/src/main/java/org/redkale/persistence/Cacheable.java
new file mode 100644
index 000000000..7efd43ba7
--- /dev/null
+++ b/src/main/java/org/redkale/persistence/Cacheable.java
@@ -0,0 +1,62 @@
+/** *****************************************************************************
+ * Copyright (c) 2008 - 2013 Oracle Corporation. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
+ * which accompanies this distribution.
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Eclipse Distribution License is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * Contributors:
+ * Linda DeMichiel - Java Persistence 2.1
+ * Linda DeMichiel - Java Persistence 2.0
+ *
+ ***************************************************************************** */
+package org.redkale.persistence;
+
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * Specifies whether an entity should be cached if caching is enabled
+ * when the value of the persistence.xml caching element
+ * is ENABLE_SELECTIVE or DISABLE_SELECTIVE.
+ * The value of the Cacheable annotation is inherited by
+ * subclasses; it can be overridden by specifying
+ * Cacheable on a subclass.
+ *
+ * Cacheable(false) means that the entity and its state must
+ * not be cached by the provider.
+ *
+ * @since Java Persistence 2.0
+ */
+@Target({TYPE})
+@Retention(RUNTIME)
+public @interface Cacheable {
+
+ /**
+ * (Optional) Whether or not the entity should be cached.
+ *
+ * @return boolean
+ */
+ boolean value() default true;
+
+ /**
+ * (Optional) 定时自动更新缓存的周期秒数,为0表示不做定时更新, 大于0表示每经过interval秒后会自动从数据库中拉取数据更新Cache
+ *
+ * @return int
+ */
+ int interval() default 0;
+
+ /**
+ * DataSource是否直接返回对象的真实引用, 而不是copy一份
+ *
+ * @return boolean
+ */
+ boolean direct() default false;
+
+}
diff --git a/src/main/java/org/redkale/persistence/Column.java b/src/main/java/org/redkale/persistence/Column.java
new file mode 100644
index 000000000..527566b14
--- /dev/null
+++ b/src/main/java/org/redkale/persistence/Column.java
@@ -0,0 +1,153 @@
+/** *****************************************************************************
+ * Copyright (c) 2008 - 2013 Oracle Corporation. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
+ * which accompanies this distribution.
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Eclipse Distribution License is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * Contributors:
+ * Linda DeMichiel - Java Persistence 2.1
+ * Linda DeMichiel - Java Persistence 2.0
+ *
+ ***************************************************************************** */
+package org.redkale.persistence;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * Specifies the mapped column for a persistent property or field.
+ * If no Column annotation is specified, the default values apply.
+ *
+ *
+ *
+ *
+ * @since Java Persistence 1.0
+ */
+@Target({METHOD, FIELD})
+@Retention(RUNTIME)
+public @interface Column {
+
+ /**
+ * (Optional) The name of the column. Defaults to
+ * the property or field name.
+ *
+ * @return String
+ */
+ String name() default "";
+
+ /**
+ * (Optional) The comment of the column.
+ *
+ * @return String
+ */
+ String comment() default "";
+
+ /**
+ * (Optional) Whether the column is a unique key. This is a
+ * shortcut for the
+ * Example 1:
+ *
+ * @Column(name="DESC", nullable=false, length=512)
+ * public String getDescription() { return description; }
+ *
+ * Example 2:
+ *
+ * @Column(name="DESC",
+ * columnDefinition="CLOB NOT NULL",
+ * table="EMP_DETAIL")
+ * @Lob
+ * public String getDescription() { return description; }
+ *
+ * Example 3:
+ *
+ * @Column(name="ORDER_COST", updatable=false, precision=12, scale=2)
+ * public BigDecimal getCost() { return cost; }
+ *
+ * UniqueConstraint annotation at the table
+ * level and is useful for when the unique key constraint
+ * corresponds to only a single column. This constraint applies
+ * in addition to any constraint entailed by primary key mapping and
+ * to constraints specified at the table level.
+ *
+ * @return boolean
+ */
+ boolean unique() default false;
+
+ /**
+ * (Optional) Whether the database column is required.
+ *
+ * @return boolean
+ */
+ boolean nullable() default true;
+
+ /**
+ * for OpenAPI Specification 3
+ *
+ * @return String
+ */
+ String example() default "";
+
+ /**
+ * (Optional) Whether the column is included in SQL INSERT
+ * statements generated by the persistence provider.
+ *
+ * @return boolean
+ */
+ boolean insertable() default true;
+
+ /**
+ * (Optional) Whether the column is included in SQL UPDATE
+ * statements generated by the persistence provider.
+ *
+ * @return boolean
+ */
+ boolean updatable() default true;
+
+ /**
+ * (Optional) The name of the table that contains the column.
+ * If absent the column is assumed to be in the primary table.
+ *
+ * @return String
+ */
+ @Deprecated
+ String table() default "";
+
+ /**
+ * (Optional) The column length. (Applies only if a
+ * string-valued column is used.)
+ * if type==String and length == 65535 then sqltype is TEXT
+ * if type==String and length <= 16777215 then sqltype is MEDIUMTEXT
+ * if type==String and length > 16777215 then sqltype is LONGTEXT
+ * if type==byte[] and length <= 65535 then sqltype is BLOB
+ * if type==byte[] and length <= 16777215 then sqltype is MEDIUMBLOB
+ * if type==byte[] and length > 16777215 then sqltype is LONGBLOB
+ *
+ * @return int
+ */
+ int length() default 255;
+
+ /**
+ * (Optional) The precision for a decimal (exact numeric)
+ * column. (Applies only if a decimal column is used.)
+ * Value must be set by developer if used when generating
+ * the DDL for the column.
+ *
+ * @return int
+ */
+ int precision() default 0;
+
+ /**
+ * (Optional) The scale for a decimal (exact numeric) column.
+ * (Applies only if a decimal column is used.)
+ *
+ * @return int
+ */
+ int scale() default 0;
+}
diff --git a/src/main/java/org/redkale/persistence/Entity.java b/src/main/java/org/redkale/persistence/Entity.java
new file mode 100644
index 000000000..d1e8be0e1
--- /dev/null
+++ b/src/main/java/org/redkale/persistence/Entity.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2008 - 2013 Oracle Corporation. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
+ * which accompanies this distribution.
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Eclipse Distribution License is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * Contributors:
+ * Linda DeMichiel - Java Persistence 2.1
+ * Linda DeMichiel - Java Persistence 2.0
+ *
+ ******************************************************************************/
+package org.redkale.persistence;
+
+import java.lang.annotation.*;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * Specifies that the class is an entity. This annotation is applied to the
+ * entity class.
+ *
+ * @since Java Persistence 1.0
+ */
+@Inherited
+@Documented
+@Target(TYPE)
+@Retention(RUNTIME)
+public @interface Entity {
+
+ /**
+ * (Optional) The entity name. Defaults to the unqualified
+ * name of the entity class. This name is used to refer to the
+ * entity in queries. The name must not be a reserved literal
+ * in the Java Persistence query language.
+ * @return String
+ */
+ String name() default "";
+
+ /**
+ * (Optional) The comment of the entity.
+ *
+ * @return String
+ */
+ String comment() default "";
+}
diff --git a/src/main/java/org/redkale/persistence/Id.java b/src/main/java/org/redkale/persistence/Id.java
new file mode 100644
index 000000000..3ccbe4712
--- /dev/null
+++ b/src/main/java/org/redkale/persistence/Id.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2008 - 2013 Oracle Corporation. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
+ * which accompanies this distribution.
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Eclipse Distribution License is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * Contributors:
+ * Linda DeMichiel - Java Persistence 2.1
+ * Linda DeMichiel - Java Persistence 2.0
+ *
+ ******************************************************************************/
+package org.redkale.persistence;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * Specifies the primary key of an entity.
+ * The field or property to which the Id annotation is applied
+ * should be one of the following types: any Java primitive type;
+ * any primitive wrapper type;
+ * String;
+ * java.util.Date;
+ * java.sql.Date;
+ * java.math.BigDecimal;
+ * java.math.BigInteger.
+ *
+ * Column annotation
+ * is specified, the primary key column name is assumed to be the name
+ * of the primary key property or field.
+ *
+ *
+ * Example:
+ *
+ * @Id
+ * public Long getId() { return id; }
+ *
+ *
+ * @see Column
+ * see GeneratedValue
+ *
+ * @since Java Persistence 1.0
+ */
+@Target({METHOD, FIELD})
+@Retention(RUNTIME)
+
+public @interface Id {}
diff --git a/src/main/java/org/redkale/persistence/Index.java b/src/main/java/org/redkale/persistence/Index.java
new file mode 100644
index 000000000..10c6fc7dc
--- /dev/null
+++ b/src/main/java/org/redkale/persistence/Index.java
@@ -0,0 +1,69 @@
+/** *****************************************************************************
+ * Copyright (c) 2011 - 2013 Oracle Corporation. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
+ * which accompanies this distribution.
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Eclipse Distribution License is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * Contributors:
+ * Linda DeMichiel - Java Persistence 2.1
+ *
+ ***************************************************************************** */
+package org.redkale.persistence;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * Used in schema generation to specify creation of an index.
+ * columnList element is a
+ * column_list, as follows:
+ *
+ *
+ * column::= index_column [,index_column]*
+ * index_column::= column_name [ASC | DESC]
+ *
+ *
+ * ASC or DESC is not specified,
+ * ASC (ascending order) is assumed.
+ *
+ * @since Java Persistence 2.1
+ *
+ */
+@Target({})
+@Retention(RUNTIME)
+public @interface Index {
+
+ /**
+ * (Optional) The name of the index; defaults to a provider-generated name.
+ *
+ * @return String
+ */
+ String name() default "";
+
+ /**
+ * (Required) The names of the columns to be included in the index,
+ * in order.
+ *
+ * @return String
+ */
+ String columnList();
+
+ /**
+ * (Optional) Whether the index is unique.
+ *
+ * @return boolean
+ */
+ boolean unique() default false;
+
+}
diff --git a/src/main/java/org/redkale/persistence/SearchColumn.java b/src/main/java/org/redkale/persistence/SearchColumn.java
new file mode 100644
index 000000000..4b3c8b5ea
--- /dev/null
+++ b/src/main/java/org/redkale/persistence/SearchColumn.java
@@ -0,0 +1,101 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.redkale.persistence;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import static java.lang.annotation.ElementType.*;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ *
+ * 搜索引擎的数据Entity依附在setter、getter方法、字段进行简单的配置
+ *
+ *
+ * 被标记的字段必须是String类型
+ * 有值时,ignore必须为true
+ *
+ * @return String
+ */
+ String highlight() default "";
+
+ /**
+ * 解析/存储时是否屏蔽该字段
+ *
+ * @return boolean
+ */
+ boolean ignore() default false;
+
+ /**
+ * 设置索引参数, 特殊值"false"表示不被索引
+ *
+ * @return String
+ */
+ String options() default "";
+
+ /**
+ * 内容是否html格式
+ *
+ * @return boolean
+ */
+ boolean html() default false;
+
+ /**
+ * 内容是否时间类型,只有数据类型为int、long、String才有效
+ *
+ * @return boolean
+ */
+ boolean date() default false;
+
+ /**
+ * 内容是否ip类型,只有数据类型为String才有效
+ *
+ * @return boolean
+ */
+ boolean ip() default false;
+
+ /**
+ * 设置索引分词器
+ *
+ * @return String
+ */
+ String analyzer() default "";
+
+ /**
+ * 设置搜索索引分词器
+ *
+ * @return String
+ */
+ String searchAnalyzer() default "";
+
+}
diff --git a/src/main/java/org/redkale/persistence/Table.java b/src/main/java/org/redkale/persistence/Table.java
new file mode 100644
index 000000000..b5277da76
--- /dev/null
+++ b/src/main/java/org/redkale/persistence/Table.java
@@ -0,0 +1,92 @@
+/** *****************************************************************************
+ * Copyright (c) 2008 - 2013 Oracle Corporation. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
+ * which accompanies this distribution.
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Eclipse Distribution License is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * Contributors:
+ * Linda DeMichiel - Java Persistence 2.1
+ * Linda DeMichiel - Java Persistence 2.0
+ *
+ ***************************************************************************** */
+package org.redkale.persistence;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * Specifies the primary table for the annotated entity. Additional
+ * tables may be specified using SecondaryTable or SecondaryTables annotation.
+ *
+ * Table annotation is specified for an entity
+ * class, the default values apply.
+ *
+ *
+ * Example:
+ *
+ * @Entity
+ * @Table(name="CUST", schema="RECORDS")
+ * public class Customer { ... }
+ *
+ *
+ * @since Java Persistence 1.0
+ */
+@Target(TYPE)
+@Retention(RUNTIME)
+public @interface Table {
+
+ /**
+ * (Optional) The name of the table.
+ * Column and JoinColumn
+ * annotations and constraints entailed by primary key mappings.
+ *
+ * Example:
+ *
+ * @Entity
+ * public class Employee {
+ * @Id int id;
+ * @Transient User currentUser;
+ * ...
+ * }
+ *
+ *
+ * @since Java Persistence 1.0
+ */
+@Target({METHOD, FIELD})
+@Retention(RUNTIME)
+
+public @interface Transient {}
diff --git a/src/main/java/org/redkale/persistence/UniqueConstraint.java b/src/main/java/org/redkale/persistence/UniqueConstraint.java
new file mode 100644
index 000000000..d06b5b19c
--- /dev/null
+++ b/src/main/java/org/redkale/persistence/UniqueConstraint.java
@@ -0,0 +1,56 @@
+/** *****************************************************************************
+ * Copyright (c) 2008 - 2013 Oracle Corporation. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
+ * which accompanies this distribution.
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Eclipse Distribution License is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * Contributors:
+ * Linda DeMichiel - Java Persistence 2.1
+ * Linda DeMichiel - Java Persistence 2.0
+ *
+ ***************************************************************************** */
+package org.redkale.persistence;
+
+import java.lang.annotation.Target;
+import java.lang.annotation.Retention;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * Specifies that a unique constraint is to be included in
+ * the generated DDL for a primary or secondary table.
+ *
+ *
+ * Example:
+ * @Entity
+ * @Table(
+ * name="EMPLOYEE",
+ * uniqueConstraints=
+ * @UniqueConstraint(columnNames={"EMP_ID", "EMP_NAME"})
+ * )
+ * public class Employee { ... }
+ *
+ *
+ * @since Java Persistence 1.0
+ */
+@Target({})
+@Retention(RUNTIME)
+public @interface UniqueConstraint {
+
+ /** (Optional) Constraint name. A provider-chosen name will be chosen
+ * if a name is not specified.
+ *
+ * @return String
+ * @since Java Persistence 2.0
+ */
+ String name() default "";
+
+ /** (Required) An array of the column names that make up the constraint.
+ *
+ * @return String[]
+ */
+ String[] columnNames();
+}
diff --git a/src/main/java/org/redkale/persistence/VirtualEntity.java b/src/main/java/org/redkale/persistence/VirtualEntity.java
new file mode 100644
index 000000000..7622fc53e
--- /dev/null
+++ b/src/main/java/org/redkale/persistence/VirtualEntity.java
@@ -0,0 +1,56 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package org.redkale.persistence;
+
+import org.redkale.source.DataSource;
+import org.redkale.source.EntityInfo;
+
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+import java.lang.annotation.*;
+import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.function.*;
+
+/**
+ * VirtualEntity表示虚拟的数据实体类, 通常Entity都会映射到数据库中的某个表,而标记为@VirtualEntity的Entity类只存在EntityCache中
+ *
+ * apply(DataSource source, EntityInfo info) {
+ return null;
+ }
+ }
+}
diff --git a/src/main/java/org/redkale/service/AbstractService.java b/src/main/java/org/redkale/service/AbstractService.java
index 376107d0f..dbe7d1e6b 100644
--- a/src/main/java/org/redkale/service/AbstractService.java
+++ b/src/main/java/org/redkale/service/AbstractService.java
@@ -6,7 +6,7 @@
package org.redkale.service;
import java.util.concurrent.*;
-import javax.annotation.Resource;
+import org.redkale.annotation.Resource;
import org.redkale.boot.Application;
import org.redkale.net.*;
import org.redkale.net.sncp.Sncp;
diff --git a/src/main/java/org/redkale/service/RetResult.java b/src/main/java/org/redkale/service/RetResult.java
index b0993ead6..308651af2 100644
--- a/src/main/java/org/redkale/service/RetResult.java
+++ b/src/main/java/org/redkale/service/RetResult.java
@@ -10,7 +10,7 @@ import java.lang.reflect.Type;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.Function;
-import javax.persistence.Column;
+import org.redkale.persistence.Column;
import org.redkale.convert.*;
import org.redkale.convert.json.*;
import org.redkale.util.*;
diff --git a/src/main/java/org/redkale/service/WebSocketNodeService.java b/src/main/java/org/redkale/service/WebSocketNodeService.java
index 3d8192be9..2d9054e98 100644
--- a/src/main/java/org/redkale/service/WebSocketNodeService.java
+++ b/src/main/java/org/redkale/service/WebSocketNodeService.java
@@ -6,6 +6,9 @@
package org.redkale.service;
import java.util.logging.Level;
+
+import org.redkale.annotation.AutoLoad;
+import org.redkale.annotation.ResourceType;
import org.redkale.net.http.*;
import org.redkale.util.*;
diff --git a/src/main/java/org/redkale/source/AbstractCacheSource.java b/src/main/java/org/redkale/source/AbstractCacheSource.java
index 8cbc5c8ee..1c7b0af19 100644
--- a/src/main/java/org/redkale/source/AbstractCacheSource.java
+++ b/src/main/java/org/redkale/source/AbstractCacheSource.java
@@ -2,6 +2,9 @@
*/
package org.redkale.source;
+import org.redkale.annotation.AutoLoad;
+import org.redkale.annotation.ResourceListener;
+import org.redkale.annotation.ResourceType;
import org.redkale.service.*;
import org.redkale.util.*;
diff --git a/src/main/java/org/redkale/source/AbstractDataSource.java b/src/main/java/org/redkale/source/AbstractDataSource.java
index 81019871f..a94088418 100644
--- a/src/main/java/org/redkale/source/AbstractDataSource.java
+++ b/src/main/java/org/redkale/source/AbstractDataSource.java
@@ -11,8 +11,12 @@ import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.function.*;
import java.util.stream.Stream;
-import javax.persistence.Entity;
+import org.redkale.annotation.AutoLoad;
+import org.redkale.annotation.Comment;
+import org.redkale.annotation.ResourceListener;
+import org.redkale.annotation.ResourceType;
import org.redkale.convert.json.JsonConvert;
+import org.redkale.persistence.Entity;
import org.redkale.service.*;
import org.redkale.util.*;
@@ -300,7 +304,7 @@ public abstract class AbstractDataSource extends AbstractService implements Data
for (T val : entitys) {
if (clazz == null) {
clazz = val.getClass();
- if (clazz.getAnnotation(Entity.class) == null) {
+ if (clazz.getAnnotation(Entity.class) == null && clazz.getAnnotation(javax.persistence.Entity.class) == null) {
throw new RuntimeException("Entity Class " + clazz + " must be on Annotation @Entity");
}
continue;
@@ -1275,7 +1279,7 @@ public abstract class AbstractDataSource extends AbstractService implements Data
public
* 注意: 所有的操作只能作用在一张表上,不能同时变更多张表
@@ -255,7 +260,7 @@ public abstract class DataSqlSource extends AbstractDataSource implements Functi
//生成创建表的SQL
protected > loadFuture;
public EntityCache(final EntityInfo
diff --git a/src/main/java/org/redkale/source/FilterKey.java b/src/main/java/org/redkale/source/FilterKey.java
index b0a1b52fb..c584df799 100644
--- a/src/main/java/org/redkale/source/FilterKey.java
+++ b/src/main/java/org/redkale/source/FilterKey.java
@@ -6,7 +6,7 @@
package org.redkale.source;
import java.util.Objects;
-import org.redkale.util.ConstructorParameters;
+import org.redkale.annotation.ConstructorParameters;
/**
* FilterKey主要用于自身字段间的表达式, 如: a.recordid = a.parentid , a.parentid就需要FilterKey来表示 new FilterKey("parentid")
diff --git a/src/main/java/org/redkale/source/FilterNodeBean.java b/src/main/java/org/redkale/source/FilterNodeBean.java
index 442fe72be..f80bc6ae6 100644
--- a/src/main/java/org/redkale/source/FilterNodeBean.java
+++ b/src/main/java/org/redkale/source/FilterNodeBean.java
@@ -9,7 +9,7 @@ import java.io.Serializable;
import java.lang.reflect.*;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
-import javax.persistence.Transient;
+import org.redkale.persistence.Transient;
import static org.redkale.source.FilterExpress.*;
import org.redkale.util.*;
@@ -186,6 +186,7 @@ public final class FilterNodeBean
+ * 不被标记为@org.redkale.persistence.Transient 的字段均视为过滤条件
*
*
@@ -46,7 +46,9 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
* 详情见: https://redkale.org
*
* @author zhangjx
+ * @deprecated replaced by org.redkale.annotation.ResourceListener
*/
+@Deprecated
@Documented
@Target({METHOD})
@Retention(RUNTIME)
diff --git a/src/main/java/org/redkale/util/ResourceType.java b/src/main/java/org/redkale/util/ResourceType.java
index 4c95150a2..b95220cf1 100644
--- a/src/main/java/org/redkale/util/ResourceType.java
+++ b/src/main/java/org/redkale/util/ResourceType.java
@@ -13,12 +13,15 @@ import java.lang.annotation.*;
* 显式的指明资源类型。
* 调用ResourceFactory.register(Object rs)时通常执行的是ResourceFactory.register(rs.getClass(), Object rs);
* 若rs.getClass()的类标记了@ResourceType, 则使用@ResourceType.value()的class值进行注入。
- *
+ *
*