All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.rapid7.container.analyzer.docker.packages.settings.CustomParserSettingsBuilder Maven / Gradle / Ivy

There is a newer version: 0.2.26
Show newest version
package com.rapid7.container.analyzer.docker.packages.settings;

import com.google.common.collect.ImmutableMap;
import com.rapid7.container.analyzer.docker.analyzer.LayerFileHandler;
import com.rapid7.container.analyzer.docker.fingerprinter.DotNetFingerprinter;
import com.rapid7.container.analyzer.docker.model.image.PackageType;
import com.rapid7.container.analyzer.docker.packages.DotNetParser;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;

public class CustomParserSettingsBuilder {

  // Mappings for customer parsers
  private static final ImmutableMap FINGERPRINTER_MAPPINGS = ImmutableMap.of(
      PackageType.DOTNET, new DotNetFingerprinter(new DotNetParser())
  );

  public static final CustomParserSettingsBuilder ALL = CustomParserSettingsBuilder.builder()
      .addFingerprinters(FINGERPRINTER_MAPPINGS.keySet());

  private final Set enabledFingerprinters = new HashSet<>();

  private CustomParserSettingsBuilder() {
  }

  public static CustomParserSettingsBuilder builder() {
    return new CustomParserSettingsBuilder();
  }

  public CustomParserSettingsBuilder addFingerprinter(PackageType packageType) {
    LayerFileHandler handler = FINGERPRINTER_MAPPINGS.get(packageType);
    if (handler != null) {
      enabledFingerprinters.add(handler);
    }
    return this;
  }

  public CustomParserSettingsBuilder addFingerprinters(Collection packageTypes) {
    for (PackageType packageType : packageTypes) {
      addFingerprinter(packageType);
    }
    return this;
  }

  public Set getFingerprinters() {
    return enabledFingerprinters;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy