test_class.file: fabric-compute-framework/src/test/java/com/olacabs/fabric/compute/builder/impl/JarScannerTest.java
test_class.identifier: JarScannerTest
test_case.body: @Test
      public void testDownload() throws Exception {
          JarScanner scanner = new JarScanner();
          scanner.download(Collections.singletonList(JarScannerTest.class.getResource("/dummy.jar").toString()));
      }
test_case.class_method_signature: JarScannerTest.testDownload()
test_case.full_signature: @Test public void testDownload()
test_case.identifier: testDownload
test_case.invocations: download singletonList toString getResource
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testDownload()
focal_class.declarator: LOGGER = LoggerFactory.getLogger(DownloadingLoader.class)
focal_class.modifier: private static final
focal_class.original_string: private static final Logger LOGGER = LoggerFactory.getLogger(DownloadingLoader.class);
focal_class.type: Logger
focal_class.var_name: LOGGER
focal_class.declarator: PROPERTIES_FILE_NAME = "compute.properties"
focal_class.modifier: private static final
focal_class.original_string: private static final String PROPERTIES_FILE_NAME = "compute.properties";
focal_class.type: String
focal_class.var_name: PROPERTIES_FILE_NAME
focal_class.declarator: properties
focal_class.modifier: private
focal_class.original_string: private Properties properties;
focal_class.type: Properties
focal_class.var_name: properties
focal_class.file: fabric-compute-framework/src/main/java/com/olacabs/fabric/compute/builder/impl/JarScanner.java
focal_class.identifier: JarScanner
focal_class.class_method_signature: JarScanner.JarScanner()
focal_class.full_signature: public  JarScanner()
focal_class.identifier: JarScanner
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.signature:  JarScanner()
focal_class.class_method_signature: JarScanner.genUrls(URL[] jarFileURLs)
focal_class.full_signature: private URL[] genUrls(URL[] jarFileURLs)
focal_class.identifier: genUrls
focal_class.modifiers: private
focal_class.parameters: (URL[] jarFileURLs)
focal_class.return: URL[]
focal_class.signature: URL[] genUrls(URL[] jarFileURLs)
focal_class.class_method_signature: JarScanner.createClassLoader(URL[] urls)
focal_class.full_signature: private ClassLoader createClassLoader(URL[] urls)
focal_class.identifier: createClassLoader
focal_class.modifiers: private
focal_class.parameters: (URL[] urls)
focal_class.return: ClassLoader
focal_class.signature: ClassLoader createClassLoader(URL[] urls)
focal_class.class_method_signature: JarScanner.loadJars(final Collection<String> urls, ClassLoader parentLoader)
focal_class.full_signature: public List<ScanResult> loadJars(final Collection<String> urls, ClassLoader parentLoader)
focal_class.identifier: loadJars
focal_class.modifiers: public
focal_class.parameters: (final Collection<String> urls, ClassLoader parentLoader)
focal_class.return: List<ScanResult>
focal_class.signature: List<ScanResult> loadJars(final Collection<String> urls, ClassLoader parentLoader)
focal_class.class_method_signature: JarScanner.download(Collection<String> urls)
focal_class.full_signature:  URL[] download(Collection<String> urls)
focal_class.identifier: download
focal_class.parameters: (Collection<String> urls)
focal_class.return: URL[]
focal_class.signature: URL[] download(Collection<String> urls)
focal_class.class_method_signature: JarScanner.scanForProcessors(ClassLoader classLoader, URL[] downloadedUrls)
focal_class.full_signature: private List<ScanResult> scanForProcessors(ClassLoader classLoader, URL[] downloadedUrls)
focal_class.identifier: scanForProcessors
focal_class.modifiers: private
focal_class.parameters: (ClassLoader classLoader, URL[] downloadedUrls)
focal_class.return: List<ScanResult>
focal_class.signature: List<ScanResult> scanForProcessors(ClassLoader classLoader, URL[] downloadedUrls)
focal_class.class_method_signature: JarScanner.scanForSources(ClassLoader classLoader, URL[] downloadedUrls)
focal_class.full_signature: private List<ScanResult> scanForSources(ClassLoader classLoader, URL[] downloadedUrls)
focal_class.identifier: scanForSources
focal_class.modifiers: private
focal_class.parameters: (ClassLoader classLoader, URL[] downloadedUrls)
focal_class.return: List<ScanResult>
focal_class.signature: List<ScanResult> scanForSources(ClassLoader classLoader, URL[] downloadedUrls)
focal_method.body: URL[] download(Collection<String> urls) {
  
          ArrayList<URL> downloadedURLs = urls.stream().map(url -> {
              URI uri = URI.create(url);
              String downloaderImplClassName = properties.getProperty(String.format("fs.%s.impl", uri.getScheme()));
              if (null == downloaderImplClassName) {
                  throw new RuntimeException(
                          new UnsupportedSchemeException(uri.getScheme() + " is not supported for downloading jars"));
              }
              try {
                  Class clazz = Class.forName(downloaderImplClassName);
                  if (JarDownloader.class.isAssignableFrom(clazz)) {
                      try {
                          return ((JarDownloader) clazz.newInstance()).download(url).toUri().toURL();
                      } catch (Exception e) {
                          throw new RuntimeException(e);
                      }
                  } else {
                      throw new RuntimeException("Unsupported implementation " + downloaderImplClassName
                              + " of " + JarDownloader.class.getSimpleName());
                  }
              } catch (ClassNotFoundException e) {
                  throw new RuntimeException(e);
              }
          })  .collect(Collectors.toCollection(ArrayList::new));
          return downloadedURLs.toArray(new URL[downloadedURLs.size()]);
      }
focal_method.class_method_signature: JarScanner.download(Collection<String> urls)
focal_method.full_signature:  URL[] download(Collection<String> urls)
focal_method.identifier: download
focal_method.invocations: collect map stream create getProperty format getScheme getScheme forName isAssignableFrom toURL toUri download newInstance getSimpleName toCollection toArray size
focal_method.parameters: (Collection<String> urls)
focal_method.return: URL[]
focal_method.signature: URL[] download(Collection<String> urls)