code: public static void extractFilesUsingFilter(File archive, File destination, FilenameFilter filter) throws ExtractionException {
          if (archive == null || destination == null) {
              return;
          }
  
          try (FileInputStream fis = new FileInputStream(archive)) {
              extractArchive(new ZipArchiveInputStream(new BufferedInputStream(fis)), destination, filter);
          } catch (FileNotFoundException ex) {
              final String msg = String.format("Error extracting file `%s` with filter: %s", archive.getAbsolutePath(), ex.getMessage());
              LOGGER.debug(msg, ex);
              throw new ExtractionException(msg);
          } catch (IOException | ArchiveExtractionException ex) {
              LOGGER.warn("Exception extracting archive '{}'.", archive.getAbsolutePath());
              LOGGER.debug("", ex);
              throw new ExtractionException("Unable to extract from archive", ex);
          }
      }
docs: Extracts the contents of an archive into the specified directory.
  
  @param archive an archive file such as a WAR or EAR
  @param destination a directory to extract the contents to
  @param filter determines which files get extracted
  @throws ExtractionException thrown if the archive is not found