docs: @Override
      @FFDCIgnore({ MalformedURLException.class, IOException.class })
      public void run() {
          OutputStream output = null;
          InputStream input = null;
          DataOutputStream dOut = null;
          DataInputStream dIn = null;
          URLConnection urlConection = null;
          try {
              URL Url = new URL(_location);
              byte[] buf;
              int byteRead = 0;
              File downloadDir = _locAdmin.getBundleFile(this, _servicePid);
  
              if (!FileUtils.ensureDirExists(downloadDir)) {
                  //we cannot find or build the directory - print error message and return null
                  AppMessageHelper.get(_handler.get()).error("CANNOT_CREATE_DIRECTORY", downloadDir, _location);
                  _callback.failedCompletion(null);
                  return;
              }
  
              String fileName = getFileName();
              boolean doDownload = true;
  
              File downloadedFile = new File(downloadDir, fileName);
              File lastModifiedFile = new File(downloadDir, fileName + ".lastModified");
  
              urlConection = Url.openConnection();
              long lastModified = urlConection.getLastModified();
  
              if (downloadedFile.exists() && lastModified > 0) {
                  if (lastModifiedFile.exists()) {
                      dIn = new DataInputStream(new FileInputStream(lastModifiedFile));
                      if (lastModified == dIn.readLong()) {
                          doDownload = false;
                      }
                  }
              }
  
              output = new BufferedOutputStream(new FileOutputStream(downloadedFile));
  
              input = urlConection.getInputStream();
              buf = new byte[1024]; //you can change the 1024 to a different size value
              while (_active.get() && (byteRead = input.read(buf)) != -1) {
                  output.write(buf, 0, byteRead);
              }
              output.flush();
  
              if (_active.get()) {
                  if (doDownload && lastModified > 0) {
                      try {
                          dOut = new DataOutputStream(new FileOutputStream(lastModifiedFile));
                          dOut.writeLong(lastModified);
                      } catch (IOException ioe) {
                      }
                  }
  
                  Container c = _callback.setupContainer(_servicePid, downloadedFile);
                  WsResource r = _locAdmin.resolveResource(downloadedFile.getAbsolutePath());
                  _callback.successfulCompletion(c, r);
              }
          } catch (MalformedURLException urlException) {
              //it isn't a URL (if it is it is badly formed). This will be thrown a lot if we are given a link
              //to a file which doesn't exist in the correct location.
              _callback.failedCompletion(urlException);
          } catch (Exception exception) {
              FFDCFilter.processException(exception, DownloadFileAction.class.getName(), "downloadFail");
              Tr.warning(_tc, "DOWNLOAD_EXCEPTION_ENCOUNTERED", _location, exception.toString());
              _callback.failedCompletion(exception);
          } finally {
              close(input);
              close(output);
              close(dIn);
              close(dOut);
          }
      }