test_class.file: dubbo-rpc/dubbo-rpc-native-thrift/src/test/java/org/apache/dubbo/rpc/protocol/nativethrift/ThriftProtocolTest.java
test_class.identifier: ThriftProtocolTest
test_case.body: @Test
      public void testThriftProtocol() throws TException {
          DemoServiceImpl server = new DemoServiceImpl();
          ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
          Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();
          int port = NetUtils.getAvailablePort();
          URL url = URL.valueOf(org.apache.dubbo.rpc.protocol.nativethrift.ThriftProtocol.NAME + "://127.0.0.1:" + port + "/" + DemoService.Iface.class.getName() + "?version=1.0.0&nativethrift.overload.method=true");
          Exporter<DemoService.Iface> exporter = protocol.export(proxyFactory.getInvoker(server, DemoService.Iface.class, url));
          Invoker<DemoService.Iface> invoker = protocol.refer(DemoService.Iface.class, url);
          DemoService.Iface client = proxyFactory.getProxy(invoker);
          String result = client.sayHello("haha");
          Assertions.assertTrue(server.isCalled());
          Assertions.assertEquals("Hello, haha", result);
          invoker.destroy();
          exporter.unexport();
      }
test_case.class_method_signature: ThriftProtocolTest.testThriftProtocol()
test_case.full_signature: @Test public void testThriftProtocol()
test_case.identifier: testThriftProtocol
test_case.invocations: getAdaptiveExtension getExtensionLoader getAdaptiveExtension getExtensionLoader getAvailablePort valueOf getName export getInvoker refer getProxy sayHello assertTrue isCalled assertEquals destroy unexport
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testThriftProtocol()
focal_class.declarator: DEFAULT_PORT = 40880
focal_class.modifier: public static final
focal_class.original_string: public static final int DEFAULT_PORT = 40880;
focal_class.type: int
focal_class.var_name: DEFAULT_PORT
focal_class.declarator: NAME = "native-thrift"
focal_class.modifier: public static final
focal_class.original_string: public static final String NAME = "native-thrift";
focal_class.type: String
focal_class.var_name: NAME
focal_class.declarator: THRIFT_IFACE = "$Iface"
focal_class.modifier: public static final
focal_class.original_string: public static final String THRIFT_IFACE = "$Iface";
focal_class.type: String
focal_class.var_name: THRIFT_IFACE
focal_class.declarator: THRIFT_PROCESSOR = "$Processor"
focal_class.modifier: public static final
focal_class.original_string: public static final String THRIFT_PROCESSOR = "$Processor";
focal_class.type: String
focal_class.var_name: THRIFT_PROCESSOR
focal_class.declarator: THRIFT_CLIENT = "$Client"
focal_class.modifier: public static final
focal_class.original_string: public static final String THRIFT_CLIENT = "$Client";
focal_class.type: String
focal_class.var_name: THRIFT_CLIENT
focal_class.declarator: SERVER_MAP = new HashMap<>()
focal_class.modifier: private static final
focal_class.original_string: private static final Map<String, TServer> SERVER_MAP = new HashMap<>();
focal_class.type: Map<String, TServer>
focal_class.var_name: SERVER_MAP
focal_class.declarator: processor = new TMultiplexedProcessor()
focal_class.modifier: private
focal_class.original_string: private TMultiplexedProcessor processor = new TMultiplexedProcessor();
focal_class.type: TMultiplexedProcessor
focal_class.var_name: processor
focal_class.file: dubbo-rpc/dubbo-rpc-native-thrift/src/main/java/org/apache/dubbo/rpc/protocol/nativethrift/ThriftProtocol.java
focal_class.identifier: ThriftProtocol
focal_class.class_method_signature: ThriftProtocol.ThriftProtocol()
focal_class.full_signature: public  ThriftProtocol()
focal_class.identifier: ThriftProtocol
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.signature:  ThriftProtocol()
focal_class.class_method_signature: ThriftProtocol.ThriftProtocol(Class<?>... exceptions)
focal_class.full_signature: public  ThriftProtocol(Class<?>... exceptions)
focal_class.identifier: ThriftProtocol
focal_class.modifiers: public
focal_class.parameters: (Class<?>... exceptions)
focal_class.signature:  ThriftProtocol(Class<?>... exceptions)
focal_class.class_method_signature: ThriftProtocol.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: ThriftProtocol.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: ThriftProtocol.doRefer(Class<T> type, URL url)
focal_class.full_signature: @Override protected T doRefer(Class<T> type, URL url)
focal_class.identifier: doRefer
focal_class.modifiers: @Override protected
focal_class.parameters: (Class<T> type, URL url)
focal_class.return: T
focal_class.signature: T doRefer(Class<T> type, URL url)
focal_class.class_method_signature: ThriftProtocol.exportThreadedSelectorServer(T impl, Class<T> type, URL url)
focal_class.full_signature: private Runnable exportThreadedSelectorServer(T impl, Class<T> type, URL url)
focal_class.identifier: exportThreadedSelectorServer
focal_class.modifiers: private
focal_class.parameters: (T impl, Class<T> type, URL url)
focal_class.return: Runnable
focal_class.signature: Runnable exportThreadedSelectorServer(T impl, Class<T> type, URL url)
focal_class.class_method_signature: ThriftProtocol.doReferFrameAndCompact(Class<T> type, URL url)
focal_class.full_signature: private T doReferFrameAndCompact(Class<T> type, URL url)
focal_class.identifier: doReferFrameAndCompact
focal_class.modifiers: private
focal_class.parameters: (Class<T> type, URL url)
focal_class.return: T
focal_class.signature: T doReferFrameAndCompact(Class<T> type, URL url)
focal_class.superclass: extends AbstractProxyProtocol
focal_method.body: public ThriftProtocol() {
          super(TException.class, RpcException.class);
      }
focal_method.class_method_signature: ThriftProtocol.ThriftProtocol()
focal_method.full_signature: public  ThriftProtocol()
focal_method.identifier: ThriftProtocol
focal_method.modifiers: public
focal_method.parameters: ()
focal_method.signature:  ThriftProtocol()