test_class.file: shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/spi/singleton/SingletonServiceLoaderTest.java
test_class.identifier: SingletonServiceLoaderTest
test_case.body: @Test(expected = NullPointerException.class)
      public void assertGetSingletonServiceLoaderWhenServiceIsNull() {
          SingletonServiceLoader.getServiceLoader(null);
      }
test_case.class_method_signature: SingletonServiceLoaderTest.assertGetSingletonServiceLoaderWhenServiceIsNull()
test_case.full_signature: @Test(expected = NullPointerException.class) public void assertGetSingletonServiceLoaderWhenServiceIsNull()
test_case.identifier: assertGetSingletonServiceLoaderWhenServiceIsNull
test_case.invocations: getServiceLoader
test_case.modifiers: @Test(expected = NullPointerException.class) public
test_case.parameters: ()
test_case.return: void
test_case.signature: void assertGetSingletonServiceLoaderWhenServiceIsNull()
focal_class.declarator: LOADERS = new ConcurrentHashMap<>()
focal_class.modifier: private static final
focal_class.original_string: private static final Map<Class<?>, SingletonServiceLoader<?>> LOADERS = new ConcurrentHashMap<>();
focal_class.type: Map<Class<?>, SingletonServiceLoader<?>>
focal_class.var_name: LOADERS
focal_class.declarator: serviceMap = new ConcurrentHashMap<>()
focal_class.modifier: private final
focal_class.original_string: private final Map<Class<?>, Collection<T>> serviceMap = new ConcurrentHashMap<>();
focal_class.type: Map<Class<?>, Collection<T>>
focal_class.var_name: serviceMap
focal_class.declarator: service
focal_class.modifier: private final
focal_class.original_string: private final Class<T> service;
focal_class.type: Class<T>
focal_class.var_name: service
focal_class.file: shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/spi/singleton/SingletonServiceLoader.java
focal_class.identifier: SingletonServiceLoader
focal_class.class_method_signature: SingletonServiceLoader.SingletonServiceLoader(final Class<T> service)
focal_class.full_signature: private  SingletonServiceLoader(final Class<T> service)
focal_class.identifier: SingletonServiceLoader
focal_class.modifiers: private
focal_class.parameters: (final Class<T> service)
focal_class.signature:  SingletonServiceLoader(final Class<T> service)
focal_class.class_method_signature: SingletonServiceLoader.getServiceLoader(final Class<T> service)
focal_class.full_signature: @SuppressWarnings("unchecked") public static SingletonServiceLoader<T> getServiceLoader(final Class<T> service)
focal_class.identifier: getServiceLoader
focal_class.modifiers: @SuppressWarnings("unchecked") public static
focal_class.parameters: (final Class<T> service)
focal_class.return: SingletonServiceLoader<T>
focal_class.signature: SingletonServiceLoader<T> getServiceLoader(final Class<T> service)
focal_class.class_method_signature: SingletonServiceLoader.newServiceInstances()
focal_class.full_signature: public Optional<T> newServiceInstances()
focal_class.identifier: newServiceInstances
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: Optional<T>
focal_class.signature: Optional<T> newServiceInstances()
focal_class.class_method_signature: SingletonServiceLoader.register(final Class<T> service)
focal_class.full_signature: private void register(final Class<T> service)
focal_class.identifier: register
focal_class.modifiers: private
focal_class.parameters: (final Class<T> service)
focal_class.return: void
focal_class.signature: void register(final Class<T> service)
focal_method.body: @SuppressWarnings("unchecked")
      public static <T> SingletonServiceLoader<T> getServiceLoader(final Class<T> service) {
          if (null == service) {
              throw new NullPointerException("extension clazz is null");
          }
          if (!service.isInterface()) {
              throw new IllegalArgumentException("extension clazz (" + service + "is not interface!");
          }
          SingletonServiceLoader<T> serviceLoader = (SingletonServiceLoader<T>) LOADERS.get(service);
          if (null != serviceLoader) {
              return serviceLoader;
          }
          LOADERS.putIfAbsent(service, new SingletonServiceLoader<>(service));
          return (SingletonServiceLoader<T>) LOADERS.get(service);
      }
focal_method.class_method_signature: SingletonServiceLoader.getServiceLoader(final Class<T> service)
focal_method.full_signature: @SuppressWarnings("unchecked") public static SingletonServiceLoader<T> getServiceLoader(final Class<T> service)
focal_method.identifier: getServiceLoader
focal_method.invocations: isInterface get putIfAbsent get
focal_method.modifiers: @SuppressWarnings("unchecked") public static
focal_method.parameters: (final Class<T> service)
focal_method.return: SingletonServiceLoader<T>
focal_method.signature: SingletonServiceLoader<T> getServiceLoader(final Class<T> service)