test_class.declarator: protocolDelegate = Mockito.mock(Protocol.class)
test_class.modifier: private
test_class.original_string: private Protocol protocolDelegate = Mockito.mock(Protocol.class);
test_class.type: Protocol
test_class.var_name: protocolDelegate
test_class.declarator: registryDelegate = Mockito.mock(Registry.class)
test_class.modifier: private
test_class.original_string: private Registry registryDelegate = Mockito.mock(Registry.class);
test_class.type: Registry
test_class.var_name: registryDelegate
test_class.declarator: exporter = Mockito.mock(Exporter.class)
test_class.modifier: private
test_class.original_string: private Exporter exporter = Mockito.mock(Exporter.class);
test_class.type: Exporter
test_class.var_name: exporter
test_class.declarator: service = new ServiceConfig<DemoServiceImpl>()
test_class.modifier: private
test_class.original_string: private ServiceConfig<DemoServiceImpl> service = new ServiceConfig<DemoServiceImpl>();
test_class.type: ServiceConfig<DemoServiceImpl>
test_class.var_name: service
test_class.declarator: service2 = new ServiceConfig<DemoServiceImpl>()
test_class.modifier: private
test_class.original_string: private ServiceConfig<DemoServiceImpl> service2 = new ServiceConfig<DemoServiceImpl>();
test_class.type: ServiceConfig<DemoServiceImpl>
test_class.var_name: service2
test_class.file: dubbo-config/dubbo-config-api/src/test/java/com/alibaba/dubbo/config/ServiceConfigTest.java
test_class.identifier: ServiceConfigTest
test_case.body: @Test
      public void testExport() throws Exception {
          service.export();
  
          assertThat(service.getExportedUrls(), hasSize(1));
          URL url = service.toUrl();
          assertThat(url.getProtocol(), equalTo("mockprotocol2"));
          assertThat(url.getPath(), equalTo(DemoService.class.getName()));
          assertThat(url.getParameters(), hasEntry(Constants.ANYHOST_KEY, "true"));
          assertThat(url.getParameters(), hasEntry(Constants.APPLICATION_KEY, "app"));
          assertThat(url.getParameters(), hasKey(Constants.BIND_IP_KEY));
          assertThat(url.getParameters(), hasKey(Constants.BIND_PORT_KEY));
          assertThat(url.getParameters(), hasEntry(Constants.DEFAULT_KEY + "." + Constants.EXPORT_KEY, "true"));
          assertThat(url.getParameters(), hasEntry(Constants.EXPORT_KEY, "true"));
          assertThat(url.getParameters(), hasEntry("echo.0.callback", "false"));
          assertThat(url.getParameters(), hasEntry(Constants.GENERIC_KEY, "false"));
          assertThat(url.getParameters(), hasEntry(Constants.INTERFACE_KEY, DemoService.class.getName()));
          assertThat(url.getParameters(), hasKey(Constants.METHODS_KEY));
          assertThat(url.getParameters().get(Constants.METHODS_KEY), containsString("echo"));
          assertThat(url.getParameters(), hasEntry(Constants.SIDE_KEY, Constants.PROVIDER));
          Mockito.verify(protocolDelegate).export(Mockito.any(Invoker.class));
      }
test_case.class_method_signature: ServiceConfigTest.testExport()
test_case.full_signature: @Test public void testExport()
test_case.identifier: testExport
test_case.invocations: export assertThat getExportedUrls hasSize toUrl assertThat getProtocol equalTo assertThat getPath equalTo getName assertThat getParameters hasEntry assertThat getParameters hasEntry assertThat getParameters hasKey assertThat getParameters hasKey assertThat getParameters hasEntry assertThat getParameters hasEntry assertThat getParameters hasEntry assertThat getParameters hasEntry assertThat getParameters hasEntry getName assertThat getParameters hasKey assertThat get getParameters containsString assertThat getParameters hasEntry export verify any
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testExport()
focal_class.declarator: serialVersionUID = 3033787999037024738L
focal_class.modifier: private static final
focal_class.original_string: private static final long serialVersionUID = 3033787999037024738L;
focal_class.type: long
focal_class.var_name: serialVersionUID
focal_class.declarator: protocol = ExtensionLoader.getExtensionLoader(Protocol.class)
              .getAdaptiveExtension()
focal_class.modifier: private static final
focal_class.original_string: private static final Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class)
              .getAdaptiveExtension();
focal_class.type: Protocol
focal_class.var_name: protocol
focal_class.declarator: proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class)
              .getAdaptiveExtension()
focal_class.modifier: private static final
focal_class.original_string: private static final ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class)
              .getAdaptiveExtension();
focal_class.type: ProxyFactory
focal_class.var_name: proxyFactory
focal_class.declarator: RANDOM_PORT_MAP = new HashMap<String, Integer>()
focal_class.modifier: private static final
focal_class.original_string: private static final Map<String, Integer> RANDOM_PORT_MAP = new HashMap<String, Integer>();
focal_class.type: Map<String, Integer>
focal_class.var_name: RANDOM_PORT_MAP
focal_class.declarator: delayExportExecutor = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory("DubboServiceDelayExporter", true))
focal_class.modifier: private static final
focal_class.original_string: private static final ScheduledExecutorService delayExportExecutor = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory("DubboServiceDelayExporter", true));
focal_class.type: ScheduledExecutorService
focal_class.var_name: delayExportExecutor
focal_class.declarator: urls = new ArrayList<URL>()
focal_class.modifier: private final
focal_class.original_string: private final List<URL> urls = new ArrayList<URL>();
focal_class.type: List<URL>
focal_class.var_name: urls
focal_class.declarator: exporters = new ArrayList<Exporter<?>>()
focal_class.modifier: private final
focal_class.original_string: private final List<Exporter<?>> exporters = new ArrayList<Exporter<?>>();
focal_class.type: List<Exporter<?>>
focal_class.var_name: exporters
focal_class.declarator: interfaceName
focal_class.modifier: private
focal_class.original_string: private String interfaceName;
focal_class.type: String
focal_class.var_name: interfaceName
focal_class.declarator: interfaceClass
focal_class.modifier: private
focal_class.original_string: private Class<?> interfaceClass;
focal_class.type: Class<?>
focal_class.var_name: interfaceClass
focal_class.declarator: ref
focal_class.modifier: private
focal_class.original_string: private T ref;
focal_class.type: T
focal_class.var_name: ref
focal_class.declarator: path
focal_class.modifier: private
focal_class.original_string: private String path;
focal_class.type: String
focal_class.var_name: path
focal_class.declarator: methods
focal_class.modifier: private
focal_class.original_string: private List<MethodConfig> methods;
focal_class.type: List<MethodConfig>
focal_class.var_name: methods
focal_class.declarator: provider
focal_class.modifier: private
focal_class.original_string: private ProviderConfig provider;
focal_class.type: ProviderConfig
focal_class.var_name: provider
focal_class.declarator: exported
focal_class.modifier: private transient volatile
focal_class.original_string: private transient volatile boolean exported;
focal_class.type: boolean
focal_class.var_name: exported
focal_class.declarator: unexported
focal_class.modifier: private transient volatile
focal_class.original_string: private transient volatile boolean unexported;
focal_class.type: boolean
focal_class.var_name: unexported
focal_class.declarator: generic
focal_class.modifier: private volatile
focal_class.original_string: private volatile String generic;
focal_class.type: String
focal_class.var_name: generic
focal_class.file: dubbo-config/dubbo-config-api/src/main/java/com/alibaba/dubbo/config/ServiceConfig.java
focal_class.identifier: ServiceConfig
focal_class.class_method_signature: ServiceConfig.ServiceConfig()
focal_class.full_signature: public  ServiceConfig()
focal_class.identifier: ServiceConfig
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.signature:  ServiceConfig()
focal_class.class_method_signature: ServiceConfig.ServiceConfig(Service service)
focal_class.full_signature: public  ServiceConfig(Service service)
focal_class.identifier: ServiceConfig
focal_class.modifiers: public
focal_class.parameters: (Service service)
focal_class.signature:  ServiceConfig(Service service)
focal_class.class_method_signature: ServiceConfig.convertProviderToProtocol(List<ProviderConfig> providers)
focal_class.full_signature: @Deprecated private static List<ProtocolConfig> convertProviderToProtocol(List<ProviderConfig> providers)
focal_class.identifier: convertProviderToProtocol
focal_class.modifiers: @Deprecated private static
focal_class.parameters: (List<ProviderConfig> providers)
focal_class.return: List<ProtocolConfig>
focal_class.signature: List<ProtocolConfig> convertProviderToProtocol(List<ProviderConfig> providers)
focal_class.class_method_signature: ServiceConfig.convertProtocolToProvider(List<ProtocolConfig> protocols)
focal_class.full_signature: @Deprecated private static List<ProviderConfig> convertProtocolToProvider(List<ProtocolConfig> protocols)
focal_class.identifier: convertProtocolToProvider
focal_class.modifiers: @Deprecated private static
focal_class.parameters: (List<ProtocolConfig> protocols)
focal_class.return: List<ProviderConfig>
focal_class.signature: List<ProviderConfig> convertProtocolToProvider(List<ProtocolConfig> protocols)
focal_class.class_method_signature: ServiceConfig.convertProviderToProtocol(ProviderConfig provider)
focal_class.full_signature: @Deprecated private static ProtocolConfig convertProviderToProtocol(ProviderConfig provider)
focal_class.identifier: convertProviderToProtocol
focal_class.modifiers: @Deprecated private static
focal_class.parameters: (ProviderConfig provider)
focal_class.return: ProtocolConfig
focal_class.signature: ProtocolConfig convertProviderToProtocol(ProviderConfig provider)
focal_class.class_method_signature: ServiceConfig.convertProtocolToProvider(ProtocolConfig protocol)
focal_class.full_signature: @Deprecated private static ProviderConfig convertProtocolToProvider(ProtocolConfig protocol)
focal_class.identifier: convertProtocolToProvider
focal_class.modifiers: @Deprecated private static
focal_class.parameters: (ProtocolConfig protocol)
focal_class.return: ProviderConfig
focal_class.signature: ProviderConfig convertProtocolToProvider(ProtocolConfig protocol)
focal_class.class_method_signature: ServiceConfig.getRandomPort(String protocol)
focal_class.full_signature: private static Integer getRandomPort(String protocol)
focal_class.identifier: getRandomPort
focal_class.modifiers: private static
focal_class.parameters: (String protocol)
focal_class.return: Integer
focal_class.signature: Integer getRandomPort(String protocol)
focal_class.class_method_signature: ServiceConfig.putRandomPort(String protocol, Integer port)
focal_class.full_signature: private static void putRandomPort(String protocol, Integer port)
focal_class.identifier: putRandomPort
focal_class.modifiers: private static
focal_class.parameters: (String protocol, Integer port)
focal_class.return: void
focal_class.signature: void putRandomPort(String protocol, Integer port)
focal_class.class_method_signature: ServiceConfig.toUrl()
focal_class.full_signature: public URL toUrl()
focal_class.identifier: toUrl
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: URL
focal_class.signature: URL toUrl()
focal_class.class_method_signature: ServiceConfig.toUrls()
focal_class.full_signature: public List<URL> toUrls()
focal_class.identifier: toUrls
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: List<URL>
focal_class.signature: List<URL> toUrls()
focal_class.class_method_signature: ServiceConfig.isExported()
focal_class.full_signature: @Parameter(excluded = true) public boolean isExported()
focal_class.identifier: isExported
focal_class.modifiers: @Parameter(excluded = true) public
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isExported()
focal_class.class_method_signature: ServiceConfig.isUnexported()
focal_class.full_signature: @Parameter(excluded = true) public boolean isUnexported()
focal_class.identifier: isUnexported
focal_class.modifiers: @Parameter(excluded = true) public
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isUnexported()
focal_class.class_method_signature: ServiceConfig.export()
focal_class.full_signature: public synchronized void export()
focal_class.identifier: export
focal_class.modifiers: public synchronized
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void export()
focal_class.class_method_signature: ServiceConfig.doExport()
focal_class.full_signature: protected synchronized void doExport()
focal_class.identifier: doExport
focal_class.modifiers: protected synchronized
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void doExport()
focal_class.class_method_signature: ServiceConfig.checkRef()
focal_class.full_signature: private void checkRef()
focal_class.identifier: checkRef
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void checkRef()
focal_class.class_method_signature: ServiceConfig.unexport()
focal_class.full_signature: public synchronized void unexport()
focal_class.identifier: unexport
focal_class.modifiers: public synchronized
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void unexport()
focal_class.class_method_signature: ServiceConfig.doExportUrls()
focal_class.full_signature: @SuppressWarnings({"unchecked", "rawtypes"}) private void doExportUrls()
focal_class.identifier: doExportUrls
focal_class.modifiers: @SuppressWarnings({"unchecked", "rawtypes"}) private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void doExportUrls()
focal_class.class_method_signature: ServiceConfig.doExportUrlsFor1Protocol(ProtocolConfig protocolConfig, List<URL> registryURLs)
focal_class.full_signature: private void doExportUrlsFor1Protocol(ProtocolConfig protocolConfig, List<URL> registryURLs)
focal_class.identifier: doExportUrlsFor1Protocol
focal_class.modifiers: private
focal_class.parameters: (ProtocolConfig protocolConfig, List<URL> registryURLs)
focal_class.return: void
focal_class.signature: void doExportUrlsFor1Protocol(ProtocolConfig protocolConfig, List<URL> registryURLs)
focal_class.class_method_signature: ServiceConfig.exportLocal(URL url)
focal_class.full_signature: @SuppressWarnings({"unchecked", "rawtypes"}) private void exportLocal(URL url)
focal_class.identifier: exportLocal
focal_class.modifiers: @SuppressWarnings({"unchecked", "rawtypes"}) private
focal_class.parameters: (URL url)
focal_class.return: void
focal_class.signature: void exportLocal(URL url)
focal_class.class_method_signature: ServiceConfig.getServiceClass(T ref)
focal_class.full_signature: protected Class getServiceClass(T ref)
focal_class.identifier: getServiceClass
focal_class.modifiers: protected
focal_class.parameters: (T ref)
focal_class.return: Class
focal_class.signature: Class getServiceClass(T ref)
focal_class.class_method_signature: ServiceConfig.findConfigedHosts(ProtocolConfig protocolConfig, List<URL> registryURLs, Map<String, String> map)
focal_class.full_signature: private String findConfigedHosts(ProtocolConfig protocolConfig, List<URL> registryURLs, Map<String, String> map)
focal_class.identifier: findConfigedHosts
focal_class.modifiers: private
focal_class.parameters: (ProtocolConfig protocolConfig, List<URL> registryURLs, Map<String, String> map)
focal_class.return: String
focal_class.signature: String findConfigedHosts(ProtocolConfig protocolConfig, List<URL> registryURLs, Map<String, String> map)
focal_class.class_method_signature: ServiceConfig.findConfigedPorts(ProtocolConfig protocolConfig, String name, Map<String, String> map)
focal_class.full_signature: private Integer findConfigedPorts(ProtocolConfig protocolConfig, String name, Map<String, String> map)
focal_class.identifier: findConfigedPorts
focal_class.modifiers: private
focal_class.parameters: (ProtocolConfig protocolConfig, String name, Map<String, String> map)
focal_class.return: Integer
focal_class.signature: Integer findConfigedPorts(ProtocolConfig protocolConfig, String name, Map<String, String> map)
focal_class.class_method_signature: ServiceConfig.parsePort(String configPort)
focal_class.full_signature: private Integer parsePort(String configPort)
focal_class.identifier: parsePort
focal_class.modifiers: private
focal_class.parameters: (String configPort)
focal_class.return: Integer
focal_class.signature: Integer parsePort(String configPort)
focal_class.class_method_signature: ServiceConfig.getValueFromConfig(ProtocolConfig protocolConfig, String key)
focal_class.full_signature: private String getValueFromConfig(ProtocolConfig protocolConfig, String key)
focal_class.identifier: getValueFromConfig
focal_class.modifiers: private
focal_class.parameters: (ProtocolConfig protocolConfig, String key)
focal_class.return: String
focal_class.signature: String getValueFromConfig(ProtocolConfig protocolConfig, String key)
focal_class.class_method_signature: ServiceConfig.checkDefault()
focal_class.full_signature: private void checkDefault()
focal_class.identifier: checkDefault
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void checkDefault()
focal_class.class_method_signature: ServiceConfig.checkProtocol()
focal_class.full_signature: private void checkProtocol()
focal_class.identifier: checkProtocol
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void checkProtocol()
focal_class.class_method_signature: ServiceConfig.getInterfaceClass()
focal_class.full_signature: public Class<?> getInterfaceClass()
focal_class.identifier: getInterfaceClass
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: Class<?>
focal_class.signature: Class<?> getInterfaceClass()
focal_class.class_method_signature: ServiceConfig.setInterfaceClass(Class<?> interfaceClass)
focal_class.full_signature: public void setInterfaceClass(Class<?> interfaceClass)
focal_class.identifier: setInterfaceClass
focal_class.modifiers: public
focal_class.parameters: (Class<?> interfaceClass)
focal_class.return: void
focal_class.signature: void setInterfaceClass(Class<?> interfaceClass)
focal_class.class_method_signature: ServiceConfig.getInterface()
focal_class.full_signature: public String getInterface()
focal_class.identifier: getInterface
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getInterface()
focal_class.class_method_signature: ServiceConfig.setInterface(String interfaceName)
focal_class.full_signature: public void setInterface(String interfaceName)
focal_class.identifier: setInterface
focal_class.modifiers: public
focal_class.parameters: (String interfaceName)
focal_class.return: void
focal_class.signature: void setInterface(String interfaceName)
focal_class.class_method_signature: ServiceConfig.setInterface(Class<?> interfaceClass)
focal_class.full_signature: public void setInterface(Class<?> interfaceClass)
focal_class.identifier: setInterface
focal_class.modifiers: public
focal_class.parameters: (Class<?> interfaceClass)
focal_class.return: void
focal_class.signature: void setInterface(Class<?> interfaceClass)
focal_class.class_method_signature: ServiceConfig.getRef()
focal_class.full_signature: public T getRef()
focal_class.identifier: getRef
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: T
focal_class.signature: T getRef()
focal_class.class_method_signature: ServiceConfig.setRef(T ref)
focal_class.full_signature: public void setRef(T ref)
focal_class.identifier: setRef
focal_class.modifiers: public
focal_class.parameters: (T ref)
focal_class.return: void
focal_class.signature: void setRef(T ref)
focal_class.class_method_signature: ServiceConfig.getPath()
focal_class.full_signature: @Parameter(excluded = true) public String getPath()
focal_class.identifier: getPath
focal_class.modifiers: @Parameter(excluded = true) public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getPath()
focal_class.class_method_signature: ServiceConfig.setPath(String path)
focal_class.full_signature: public void setPath(String path)
focal_class.identifier: setPath
focal_class.modifiers: public
focal_class.parameters: (String path)
focal_class.return: void
focal_class.signature: void setPath(String path)
focal_class.class_method_signature: ServiceConfig.getMethods()
focal_class.full_signature: public List<MethodConfig> getMethods()
focal_class.identifier: getMethods
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: List<MethodConfig>
focal_class.signature: List<MethodConfig> getMethods()
focal_class.class_method_signature: ServiceConfig.setMethods(List<? extends MethodConfig> methods)
focal_class.full_signature: @SuppressWarnings("unchecked") public void setMethods(List<? extends MethodConfig> methods)
focal_class.identifier: setMethods
focal_class.modifiers: @SuppressWarnings("unchecked") public
focal_class.parameters: (List<? extends MethodConfig> methods)
focal_class.return: void
focal_class.signature: void setMethods(List<? extends MethodConfig> methods)
focal_class.class_method_signature: ServiceConfig.getProvider()
focal_class.full_signature: public ProviderConfig getProvider()
focal_class.identifier: getProvider
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: ProviderConfig
focal_class.signature: ProviderConfig getProvider()
focal_class.class_method_signature: ServiceConfig.setProvider(ProviderConfig provider)
focal_class.full_signature: public void setProvider(ProviderConfig provider)
focal_class.identifier: setProvider
focal_class.modifiers: public
focal_class.parameters: (ProviderConfig provider)
focal_class.return: void
focal_class.signature: void setProvider(ProviderConfig provider)
focal_class.class_method_signature: ServiceConfig.getGeneric()
focal_class.full_signature: public String getGeneric()
focal_class.identifier: getGeneric
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getGeneric()
focal_class.class_method_signature: ServiceConfig.setGeneric(String generic)
focal_class.full_signature: public void setGeneric(String generic)
focal_class.identifier: setGeneric
focal_class.modifiers: public
focal_class.parameters: (String generic)
focal_class.return: void
focal_class.signature: void setGeneric(String generic)
focal_class.class_method_signature: ServiceConfig.setMock(Boolean mock)
focal_class.full_signature: @Override public void setMock(Boolean mock)
focal_class.identifier: setMock
focal_class.modifiers: @Override public
focal_class.parameters: (Boolean mock)
focal_class.return: void
focal_class.signature: void setMock(Boolean mock)
focal_class.class_method_signature: ServiceConfig.setMock(String mock)
focal_class.full_signature: @Override public void setMock(String mock)
focal_class.identifier: setMock
focal_class.modifiers: @Override public
focal_class.parameters: (String mock)
focal_class.return: void
focal_class.signature: void setMock(String mock)
focal_class.class_method_signature: ServiceConfig.getExportedUrls()
focal_class.full_signature: public List<URL> getExportedUrls()
focal_class.identifier: getExportedUrls
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: List<URL>
focal_class.signature: List<URL> getExportedUrls()
focal_class.class_method_signature: ServiceConfig.getProviders()
focal_class.full_signature: @Deprecated public List<ProviderConfig> getProviders()
focal_class.identifier: getProviders
focal_class.modifiers: @Deprecated public
focal_class.parameters: ()
focal_class.return: List<ProviderConfig>
focal_class.signature: List<ProviderConfig> getProviders()
focal_class.class_method_signature: ServiceConfig.setProviders(List<ProviderConfig> providers)
focal_class.full_signature: @Deprecated public void setProviders(List<ProviderConfig> providers)
focal_class.identifier: setProviders
focal_class.modifiers: @Deprecated public
focal_class.parameters: (List<ProviderConfig> providers)
focal_class.return: void
focal_class.signature: void setProviders(List<ProviderConfig> providers)
focal_class.class_method_signature: ServiceConfig.getUniqueServiceName()
focal_class.full_signature: @Parameter(excluded = true) public String getUniqueServiceName()
focal_class.identifier: getUniqueServiceName
focal_class.modifiers: @Parameter(excluded = true) public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String getUniqueServiceName()
focal_class.superclass: extends AbstractServiceConfig
focal_method.body: public synchronized void export() {
          if (provider != null) {
              // 获取 export 和 delay 配置
              if (export == null) {
                  export = provider.getExport();
              }
              if (delay == null) {
                  delay = provider.getDelay();
              }
          }
          // 如果 export 为 false，则不导出服务
          if (export != null && !export) {
              return;
          }
          // delay > 0，延时导出服务
          if (delay != null && delay > 0) {
              delayExportExecutor.schedule(new Runnable() {
                  @Override
                  public void run() {
                      doExport();
                  }
              }, delay, TimeUnit.MILLISECONDS);
          } else {
              doExport();
          }
      }
focal_method.class_method_signature: ServiceConfig.export()
focal_method.full_signature: public synchronized void export()
focal_method.identifier: export
focal_method.invocations: getExport getDelay schedule doExport doExport
focal_method.modifiers: public synchronized
focal_method.parameters: ()
focal_method.return: void
focal_method.signature: void export()