sncp优化
This commit is contained in:
@@ -61,7 +61,7 @@ public abstract class Sncp {
|
|||||||
|
|
||||||
boolean remote();
|
boolean remote();
|
||||||
|
|
||||||
Class type();
|
Class type(); //resourceServiceType
|
||||||
|
|
||||||
int index() default 0; //排列顺序, 主要用于Method
|
int index() default 0; //排列顺序, 主要用于Method
|
||||||
}
|
}
|
||||||
@@ -227,9 +227,14 @@ public abstract class Sncp {
|
|||||||
return type != null ? type.value() : service.getClass();
|
return type != null ? type.value() : service.getClass();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Class getServiceType(Service service) {
|
public static <T extends Service> Class getResourceType(Class<T> serviceImplClass) {
|
||||||
return isSncpDyn(service) && service.getClass().getSimpleName().startsWith("_Dyn") ? service.getClass().getSuperclass() : service.getClass();
|
ResourceType type = serviceImplClass.getAnnotation(ResourceType.class);
|
||||||
|
return type != null ? type.value() : serviceImplClass;
|
||||||
}
|
}
|
||||||
|
//
|
||||||
|
// public static Class getServiceType(Service service) {
|
||||||
|
// return isSncpDyn(service) && service.getClass().getSimpleName().startsWith("_Dyn") ? service.getClass().getSuperclass() : service.getClass();
|
||||||
|
// }
|
||||||
|
|
||||||
public static AnyValue getResourceConf(Service service) {
|
public static AnyValue getResourceConf(Service service) {
|
||||||
if (service == null || !isSncpDyn(service)) {
|
if (service == null || !isSncpDyn(service)) {
|
||||||
@@ -473,7 +478,7 @@ public abstract class Sncp {
|
|||||||
{
|
{
|
||||||
av0 = cw.visitAnnotation(sncpDynDesc, true);
|
av0 = cw.visitAnnotation(sncpDynDesc, true);
|
||||||
av0.visit("remote", Boolean.FALSE);
|
av0.visit("remote", Boolean.FALSE);
|
||||||
av0.visit("type", Type.getType(Type.getDescriptor(serviceImplClass)));
|
av0.visit("type", Type.getType(Type.getDescriptor(getResourceType(serviceImplClass))));
|
||||||
av0.visitEnd();
|
av0.visitEnd();
|
||||||
}
|
}
|
||||||
{ //给新类加上 原有的Annotation
|
{ //给新类加上 原有的Annotation
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ public final class SncpDynServlet extends SncpServlet {
|
|||||||
this.maxNameLength = maxNameLength;
|
this.maxNameLength = maxNameLength;
|
||||||
this.serviceid = Sncp.serviceid(serviceResourceName, serviceResourceType);
|
this.serviceid = Sncp.serviceid(serviceResourceName, serviceResourceType);
|
||||||
RedkaleClassLoader.putReflectionPublicMethods(service.getClass().getName());
|
RedkaleClassLoader.putReflectionPublicMethods(service.getClass().getName());
|
||||||
for (Map.Entry<Uint128, Method> en : Sncp.loadMethodActions(service.getClass()).entrySet()) {
|
for (Map.Entry<Uint128, Method> en : Sncp.loadMethodActions(serviceResourceType).entrySet()) {
|
||||||
SncpServletAction action;
|
SncpServletAction action;
|
||||||
try {
|
try {
|
||||||
action = SncpServletAction.create(service, serviceid, en.getKey(), en.getValue());
|
action = SncpServletAction.create(service, serviceid, en.getKey(), en.getValue());
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ public final class SncpOldClient {
|
|||||||
this.serviceid = Sncp.serviceid(serviceResourceName, serviceResourceType);
|
this.serviceid = Sncp.serviceid(serviceResourceName, serviceResourceType);
|
||||||
final List<SncpServiceAction> methodens = new ArrayList<>();
|
final List<SncpServiceAction> methodens = new ArrayList<>();
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
for (Map.Entry<Uint128, Method> en : Sncp.loadMethodActions(serviceClass).entrySet()) {
|
for (Map.Entry<Uint128, Method> en : Sncp.loadMethodActions(serviceResourceType).entrySet()) {
|
||||||
methodens.add(new SncpServiceAction(serviceClass, en.getValue(), serviceid, en.getKey()));
|
methodens.add(new SncpServiceAction(serviceClass, en.getValue(), serviceid, en.getKey()));
|
||||||
}
|
}
|
||||||
this.actions = methodens.toArray(new SncpServiceAction[methodens.size()]);
|
this.actions = methodens.toArray(new SncpServiceAction[methodens.size()]);
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ public abstract class AbstractService implements Service {
|
|||||||
* @return Class
|
* @return Class
|
||||||
*/
|
*/
|
||||||
protected Class serviceType() {
|
protected Class serviceType() {
|
||||||
return Sncp.getServiceType(this);
|
return Sncp.isSncpDyn(this) && getClass().getSimpleName().startsWith("_Dyn") ? getClass().getSuperclass() : getClass();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user