mirror of
https://github.com/apache/dubbo.git
synced 2024-10-23 07:04:37 +08:00
Fix Class Check
This commit is contained in:
parent
0f8972a298
commit
c44873e9b2
@ -117,7 +117,7 @@ public class DefaultSerializeClassChecker implements AllowClassNotifyListener {
|
||||
|
||||
private Class<?> loadClass0(ClassLoader classLoader, String className) throws ClassNotFoundException {
|
||||
if (checkStatus == SerializeCheckStatus.DISABLE) {
|
||||
return Class.forName(className, false, classLoader);
|
||||
return ClassUtils.forName(className, classLoader);
|
||||
}
|
||||
|
||||
long hash = MAGIC_HASH_CODE;
|
||||
|
@ -2292,7 +2292,16 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "org.apache.dubbo.rpc.filter.GenericImplFilter"
|
||||
"name": "org.apache.dubbo.rpc.filter.GenericImplFilter",
|
||||
"allPublicMethods": true,
|
||||
"methods": [
|
||||
{
|
||||
"name": "<init>",
|
||||
"parameterTypes": [
|
||||
"org.apache.dubbo.rpc.model.ModuleModel"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "org.apache.dubbo.rpc.filter.TimeoutFilter",
|
||||
@ -2479,9 +2488,6 @@
|
||||
{
|
||||
"name": "org.apache.dubbo.rpc.filter.GenericFilter"
|
||||
},
|
||||
{
|
||||
"name": "org.apache.dubbo.rpc.filter.GenericImplFilter"
|
||||
},
|
||||
{
|
||||
"name": "org.apache.dubbo.rpc.filter.TimeoutFilter"
|
||||
},
|
||||
|
@ -16,6 +16,11 @@
|
||||
*/
|
||||
package org.apache.dubbo.rpc.filter;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.reflect.Type;
|
||||
|
||||
import org.apache.dubbo.common.beanutil.JavaBeanAccessor;
|
||||
import org.apache.dubbo.common.beanutil.JavaBeanDescriptor;
|
||||
import org.apache.dubbo.common.beanutil.JavaBeanSerializeUtil;
|
||||
@ -23,6 +28,7 @@ import org.apache.dubbo.common.constants.CommonConstants;
|
||||
import org.apache.dubbo.common.extension.Activate;
|
||||
import org.apache.dubbo.common.logger.ErrorTypeAwareLogger;
|
||||
import org.apache.dubbo.common.logger.LoggerFactory;
|
||||
import org.apache.dubbo.common.utils.DefaultSerializeClassChecker;
|
||||
import org.apache.dubbo.common.utils.PojoUtils;
|
||||
import org.apache.dubbo.common.utils.ReflectUtils;
|
||||
import org.apache.dubbo.rpc.Constants;
|
||||
@ -32,15 +38,11 @@ import org.apache.dubbo.rpc.Invoker;
|
||||
import org.apache.dubbo.rpc.Result;
|
||||
import org.apache.dubbo.rpc.RpcException;
|
||||
import org.apache.dubbo.rpc.RpcInvocation;
|
||||
import org.apache.dubbo.rpc.model.ModuleModel;
|
||||
import org.apache.dubbo.rpc.service.GenericService;
|
||||
import org.apache.dubbo.rpc.support.ProtocolUtils;
|
||||
import org.apache.dubbo.rpc.support.RpcUtils;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.reflect.Type;
|
||||
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.$INVOKE;
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.$INVOKE_ASYNC;
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.GENERIC_PARAMETER_DESC;
|
||||
@ -59,6 +61,12 @@ public class GenericImplFilter implements Filter, Filter.Listener {
|
||||
|
||||
private static final String GENERIC_IMPL_MARKER = "GENERIC_IMPL";
|
||||
|
||||
private final ModuleModel moduleModel;
|
||||
|
||||
public GenericImplFilter(ModuleModel moduleModel) {
|
||||
this.moduleModel = moduleModel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
|
||||
String generic = invoker.getUrl().getParameter(GENERIC_KEY);
|
||||
@ -172,7 +180,9 @@ public class GenericImplFilter implements Filter, Filter.Listener {
|
||||
com.alibaba.dubbo.rpc.service.GenericException exception = (com.alibaba.dubbo.rpc.service.GenericException) appResponse.getException();
|
||||
try {
|
||||
String className = exception.getExceptionClass();
|
||||
Class<?> clazz = ReflectUtils.forName(className);
|
||||
DefaultSerializeClassChecker classChecker = moduleModel.getApplicationModel()
|
||||
.getFrameworkModel().getBeanFactory().getBean(DefaultSerializeClassChecker.class);
|
||||
Class<?> clazz = classChecker.loadClass(Thread.currentThread().getContextClassLoader(), className);
|
||||
Throwable targetException = null;
|
||||
Throwable lastException = null;
|
||||
try {
|
||||
|
@ -16,6 +16,10 @@
|
||||
*/
|
||||
package org.apache.dubbo.rpc.filter;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.dubbo.common.URL;
|
||||
import org.apache.dubbo.rpc.AppResponse;
|
||||
import org.apache.dubbo.rpc.AsyncRpcResult;
|
||||
@ -23,18 +27,15 @@ import org.apache.dubbo.rpc.Invocation;
|
||||
import org.apache.dubbo.rpc.Invoker;
|
||||
import org.apache.dubbo.rpc.Result;
|
||||
import org.apache.dubbo.rpc.RpcInvocation;
|
||||
import org.apache.dubbo.rpc.model.ApplicationModel;
|
||||
import org.apache.dubbo.rpc.service.GenericService;
|
||||
import org.apache.dubbo.rpc.support.DemoService;
|
||||
import org.apache.dubbo.rpc.support.Person;
|
||||
|
||||
import com.alibaba.dubbo.rpc.service.GenericException;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.Mockito;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import com.alibaba.dubbo.rpc.service.GenericException;
|
||||
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.$INVOKE;
|
||||
import static org.apache.dubbo.rpc.Constants.GENERIC_KEY;
|
||||
@ -43,7 +44,7 @@ import static org.mockito.Mockito.when;
|
||||
|
||||
class GenericImplFilterTest {
|
||||
|
||||
private GenericImplFilter genericImplFilter = new GenericImplFilter();
|
||||
private GenericImplFilter genericImplFilter = new GenericImplFilter(ApplicationModel.defaultModel().getDefaultModule());
|
||||
|
||||
@Test
|
||||
void testInvoke() throws Exception {
|
||||
|
Loading…
Reference in New Issue
Block a user