test_class.file: dubbo-rpc/dubbo-rpc-hessian/src/test/java/com/alibaba/dubbo/rpc/protocol/hessian/HessianProtocolTest.java
test_class.identifier: HessianProtocolTest
test_case.body: @Test
      public void testGenericInvokeWithBean() {
          HessianServiceImpl server = new HessianServiceImpl();
          Assert.assertFalse(server.isCalled());
          ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
          Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();
          URL url = URL.valueOf("hessian://127.0.0.1:5342/" + HessianService.class.getName() + "?version=1.0.0&generic=bean");
          Exporter<HessianService> exporter = protocol.export(proxyFactory.getInvoker(server, HessianService.class, url));
          Invoker<GenericService> invoker = protocol.refer(GenericService.class, url);
          GenericService client = proxyFactory.getProxy(invoker);
  
          JavaBeanDescriptor javaBeanDescriptor = JavaBeanSerializeUtil.serialize("haha");
  
          Object result = client.$invoke("sayHello", new String[]{"java.lang.String"}, new Object[]{javaBeanDescriptor});
          Assert.assertTrue(server.isCalled());
          Assert.assertEquals("Hello, haha", JavaBeanSerializeUtil.deserialize((JavaBeanDescriptor) result));
          invoker.destroy();
          exporter.unexport();
      }
test_case.class_method_signature: HessianProtocolTest.testGenericInvokeWithBean()
test_case.full_signature: @Test public void testGenericInvokeWithBean()
test_case.identifier: testGenericInvokeWithBean
test_case.invocations: assertFalse isCalled getAdaptiveExtension getExtensionLoader getAdaptiveExtension getExtensionLoader valueOf getName export getInvoker refer getProxy serialize invoke assertTrue isCalled assertEquals deserialize destroy unexport
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testGenericInvokeWithBean()
focal_class.declarator: serverMap = new ConcurrentHashMap<String, HttpServer>()
focal_class.modifier: private final
focal_class.original_string: private final Map<String, HttpServer> serverMap = new ConcurrentHashMap<String, HttpServer>();
focal_class.type: Map<String, HttpServer>
focal_class.var_name: serverMap
focal_class.declarator: skeletonMap = new ConcurrentHashMap<String, HessianSkeleton>()
focal_class.modifier: private final
focal_class.original_string: private final Map<String, HessianSkeleton> skeletonMap = new ConcurrentHashMap<String, HessianSkeleton>();
focal_class.type: Map<String, HessianSkeleton>
focal_class.var_name: skeletonMap
focal_class.declarator: httpBinder
focal_class.modifier: private
focal_class.original_string: private HttpBinder httpBinder;
focal_class.type: HttpBinder
focal_class.var_name: httpBinder
focal_class.file: dubbo-rpc/dubbo-rpc-hessian/src/main/java/com/alibaba/dubbo/rpc/protocol/hessian/HessianProtocol.java
focal_class.identifier: HessianProtocol
focal_class.class_method_signature: HessianProtocol.HessianProtocol()
focal_class.full_signature: public  HessianProtocol()
focal_class.identifier: HessianProtocol
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.signature:  HessianProtocol()
focal_class.class_method_signature: HessianProtocol.setHttpBinder(HttpBinder httpBinder)
focal_class.full_signature: public void setHttpBinder(HttpBinder httpBinder)
focal_class.identifier: setHttpBinder
focal_class.modifiers: public
focal_class.parameters: (HttpBinder httpBinder)
focal_class.return: void
focal_class.signature: void setHttpBinder(HttpBinder httpBinder)
focal_class.class_method_signature: HessianProtocol.getDefaultPort()
focal_class.full_signature: @Override public int getDefaultPort()
focal_class.identifier: getDefaultPort
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: int
focal_class.signature: int getDefaultPort()
focal_class.class_method_signature: HessianProtocol.doExport(T impl, Class<T> type, URL url)
focal_class.full_signature: @Override protected Runnable doExport(T impl, Class<T> type, URL url)
focal_class.identifier: doExport
focal_class.modifiers: @Override protected
focal_class.parameters: (T impl, Class<T> type, URL url)
focal_class.return: Runnable
focal_class.signature: Runnable doExport(T impl, Class<T> type, URL url)
focal_class.class_method_signature: HessianProtocol.doRefer(Class<T> serviceType, URL url)
focal_class.full_signature: @Override @SuppressWarnings("unchecked") protected T doRefer(Class<T> serviceType, URL url)
focal_class.identifier: doRefer
focal_class.modifiers: @Override @SuppressWarnings("unchecked") protected
focal_class.parameters: (Class<T> serviceType, URL url)
focal_class.return: T
focal_class.signature: T doRefer(Class<T> serviceType, URL url)
focal_class.class_method_signature: HessianProtocol.getErrorCode(Throwable e)
focal_class.full_signature: @Override protected int getErrorCode(Throwable e)
focal_class.identifier: getErrorCode
focal_class.modifiers: @Override protected
focal_class.parameters: (Throwable e)
focal_class.return: int
focal_class.signature: int getErrorCode(Throwable e)
focal_class.class_method_signature: HessianProtocol.destroy()
focal_class.full_signature: @Override public void destroy()
focal_class.identifier: destroy
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void destroy()
focal_class.superclass: extends AbstractProxyProtocol
focal_method.body: @Override
      public void destroy() {
          super.destroy();
          for (String key : new ArrayList<String>(serverMap.keySet())) {
              HttpServer server = serverMap.remove(key);
              if (server != null) {
                  try {
                      if (logger.isInfoEnabled()) {
                          logger.info("Close hessian server " + server.getUrl());
                      }
                      server.close();
                  } catch (Throwable t) {
                      logger.warn(t.getMessage(), t);
                  }
              }
          }
      }
focal_method.class_method_signature: HessianProtocol.destroy()
focal_method.full_signature: @Override public void destroy()
focal_method.identifier: destroy
focal_method.invocations: destroy keySet remove isInfoEnabled info getUrl close warn getMessage
focal_method.modifiers: @Override public
focal_method.parameters: ()
focal_method.return: void
focal_method.signature: void destroy()