test_class.file: oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationTest.java
test_class.identifier: SolrServerConfigurationTest
test_case.body: @Test
      public void testCreateRemoteServerFromConfig() throws Exception {
          SolrServerConfiguration<RemoteSolrServerProvider> remoteSolrServerProviderSolrServerConfiguration =
                  new RemoteSolrServerConfiguration(null, null, 1, 1, null, 10, 10, null);
          RemoteSolrServerProvider remoteSolrServerProvider = remoteSolrServerProviderSolrServerConfiguration.getProvider();
          assertNotNull(remoteSolrServerProvider);
      }
test_case.class_method_signature: SolrServerConfigurationTest.testCreateRemoteServerFromConfig()
test_case.full_signature: @Test public void testCreateRemoteServerFromConfig()
test_case.identifier: testCreateRemoteServerFromConfig
test_case.invocations: getProvider assertNotNull
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testCreateRemoteServerFromConfig()
focal_class.declarator: type
focal_class.modifier: private final
focal_class.original_string: private final Type type;
focal_class.type: Type
focal_class.var_name: type
focal_class.declarator: constructor
focal_class.modifier: private volatile
focal_class.original_string: private volatile Constructor<?> constructor;
focal_class.type: Constructor<?>
focal_class.var_name: constructor
focal_class.file: oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfiguration.java
focal_class.identifier: SolrServerConfiguration
focal_class.class_method_signature: SolrServerConfiguration.SolrServerConfiguration()
focal_class.full_signature: protected  SolrServerConfiguration()
focal_class.identifier: SolrServerConfiguration
focal_class.modifiers: protected
focal_class.parameters: ()
focal_class.signature:  SolrServerConfiguration()
focal_class.class_method_signature: SolrServerConfiguration.getType()
focal_class.full_signature: public Type getType()
focal_class.identifier: getType
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: Type
focal_class.signature: Type getType()
focal_class.class_method_signature: SolrServerConfiguration.getProvider()
focal_class.full_signature: public S getProvider()
focal_class.identifier: getProvider
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: S
focal_class.signature: S getProvider()
focal_method.body: public S getProvider()
              throws IllegalAccessException,
              InvocationTargetException, InstantiationException {
          if (constructor == null) {
              Class<?> rawType = type instanceof Class<?>
                      ? (Class<?>) type
                      : (Class<?>) ((ParameterizedType) type).getRawType();
              Constructor<?>[] constructors = rawType.getConstructors();
              for (Constructor<?> c: constructors) {
                  if (c.getParameterTypes().length == 1 && c.getParameterTypes()[0].equals(this.getClass())) {
                      constructor = c;
                  }
              }
              if (constructor == null) {
                  throw new InstantiationException("missing constructor SolrServerProvider(SolrServerConfiguration) for type "+ rawType);
              }
          }
          return (S) constructor.newInstance(this); // TODO : each SolrServerProvider impl. is forced to have a constructor with a SolrServerConfiguration, fix?
      }
focal_method.class_method_signature: SolrServerConfiguration.getProvider()
focal_method.full_signature: public S getProvider()
focal_method.identifier: getProvider
focal_method.invocations: getRawType getConstructors getParameterTypes equals getParameterTypes getClass newInstance
focal_method.modifiers: public
focal_method.parameters: ()
focal_method.return: S
focal_method.signature: S getProvider()