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.declarator: delayService = new ServiceConfig<DemoServiceImpl>()
test_class.modifier: private
test_class.original_string: private ServiceConfig<DemoServiceImpl> delayService = new ServiceConfig<DemoServiceImpl>();
test_class.type: ServiceConfig<DemoServiceImpl>
test_class.var_name: delayService
test_class.file: dubbo-config/dubbo-config-api/src/test/java/org/apache/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(ANYHOST_KEY, "true"));
          assertThat(url.getParameters(), hasEntry(APPLICATION_KEY, "app"));
          assertThat(url.getParameters(), hasKey(BIND_IP_KEY));
          assertThat(url.getParameters(), hasKey(BIND_PORT_KEY));
          assertThat(url.getParameters(), hasEntry(EXPORT_KEY, "true"));
          assertThat(url.getParameters(), hasEntry("echo.0.callback", "false"));
          assertThat(url.getParameters(), hasEntry(GENERIC_KEY, "false"));
          assertThat(url.getParameters(), hasEntry(INTERFACE_KEY, DemoService.class.getName()));
          assertThat(url.getParameters(), hasKey(METHODS_KEY));
          assertThat(url.getParameters().get(METHODS_KEY), containsString("echo"));
          assertThat(url.getParameters(), hasEntry(SIDE_KEY, 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 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: logger = LoggerFactory.getLogger(ServiceConfig.class)
focal_class.modifier: public static final
focal_class.original_string: public static final Logger logger = LoggerFactory.getLogger(ServiceConfig.class);
focal_class.type: Logger
focal_class.var_name: logger
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: DELAY_EXPORT_EXECUTOR = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory("DubboServiceDelayExporter", true))
focal_class.modifier: private static final
focal_class.original_string: private static final ScheduledExecutorService DELAY_EXPORT_EXECUTOR = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory("DubboServiceDelayExporter", true));
focal_class.type: ScheduledExecutorService
focal_class.var_name: DELAY_EXPORT_EXECUTOR
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: PROXY_FACTORY = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension()
focal_class.modifier: private static final
focal_class.original_string: private static final ProxyFactory PROXY_FACTORY = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
focal_class.type: ProxyFactory
focal_class.var_name: PROXY_FACTORY
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: bootstrap
focal_class.modifier: private
focal_class.original_string: private DubboBootstrap bootstrap;
focal_class.type: DubboBootstrap
focal_class.var_name: bootstrap
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.file: dubbo-config/dubbo-config-api/src/main/java/org/apache/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.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.unexport()
focal_class.full_signature: public void unexport()
focal_class.identifier: unexport
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void unexport()
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.exported()
focal_class.full_signature: public void exported()
focal_class.identifier: exported
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void exported()
focal_class.class_method_signature: ServiceConfig.checkAndUpdateSubConfigs()
focal_class.full_signature: private void checkAndUpdateSubConfigs()
focal_class.identifier: checkAndUpdateSubConfigs
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void checkAndUpdateSubConfigs()
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.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"}) /** * always export injvm */ private void exportLocal(URL url)
focal_class.identifier: exportLocal
focal_class.modifiers: @SuppressWarnings({"unchecked", "rawtypes"}) /** * always export injvm */ private
focal_class.parameters: (URL url)
focal_class.return: void
focal_class.signature: void exportLocal(URL url)
focal_class.class_method_signature: ServiceConfig.isOnlyInJvm()
focal_class.full_signature: private boolean isOnlyInJvm()
focal_class.identifier: isOnlyInJvm
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isOnlyInJvm()
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.getRandomPort(String protocol)
focal_class.full_signature: private Integer getRandomPort(String protocol)
focal_class.identifier: getRandomPort
focal_class.modifiers: private
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 void putRandomPort(String protocol, Integer port)
focal_class.identifier: putRandomPort
focal_class.modifiers: private
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.postProcessConfig()
focal_class.full_signature: private void postProcessConfig()
focal_class.identifier: postProcessConfig
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void postProcessConfig()
focal_class.class_method_signature: ServiceConfig.dispatch(Event event)
focal_class.full_signature: private void dispatch(Event event)
focal_class.identifier: dispatch
focal_class.modifiers: private
focal_class.parameters: (Event event)
focal_class.return: void
focal_class.signature: void dispatch(Event event)
focal_class.class_method_signature: ServiceConfig.getBootstrap()
focal_class.full_signature: public DubboBootstrap getBootstrap()
focal_class.identifier: getBootstrap
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: DubboBootstrap
focal_class.signature: DubboBootstrap getBootstrap()
focal_class.class_method_signature: ServiceConfig.setBootstrap(DubboBootstrap bootstrap)
focal_class.full_signature: public void setBootstrap(DubboBootstrap bootstrap)
focal_class.identifier: setBootstrap
focal_class.modifiers: public
focal_class.parameters: (DubboBootstrap bootstrap)
focal_class.return: void
focal_class.signature: void setBootstrap(DubboBootstrap bootstrap)
focal_class.superclass: extends ServiceConfigBase<T>
focal_method.body: public synchronized void export() {
          if (bootstrap == null) {
              bootstrap = DubboBootstrap.getInstance();
              bootstrap.initialize();
          }
  
          checkAndUpdateSubConfigs();
  
          //init serviceMetadata
          serviceMetadata.setVersion(getVersion());
          serviceMetadata.setGroup(getGroup());
          serviceMetadata.setDefaultGroup(getGroup());
          serviceMetadata.setServiceType(getInterfaceClass());
          serviceMetadata.setServiceInterfaceName(getInterface());
          serviceMetadata.setTarget(getRef());
  
          if (!shouldExport()) {
              return;
          }
  
          if (shouldDelay()) {
              DELAY_EXPORT_EXECUTOR.schedule(this::doExport, getDelay(), TimeUnit.MILLISECONDS);
          } else {
              doExport();
          }
  
          exported();
      }
focal_method.class_method_signature: ServiceConfig.export()
focal_method.full_signature: public synchronized void export()
focal_method.identifier: export
focal_method.invocations: getInstance initialize checkAndUpdateSubConfigs setVersion getVersion setGroup getGroup setDefaultGroup getGroup setServiceType getInterfaceClass setServiceInterfaceName getInterface setTarget getRef shouldExport shouldDelay schedule getDelay doExport exported
focal_method.modifiers: public synchronized
focal_method.parameters: ()
focal_method.return: void
focal_method.signature: void export()