public static Handler buildDefault()

in nullaway/src/main/java/com/uber/nullaway/handlers/Handlers.java [45:95]


  public static Handler buildDefault(Config config) {
    ImmutableList.Builder<Handler> handlerListBuilder = ImmutableList.builder();
    MethodNameUtil methodNameUtil = new MethodNameUtil();

    RestrictiveAnnotationHandler restrictiveAnnotationHandler = null;
    if (config.acknowledgeRestrictiveAnnotations()) {
      // This runs before LibraryModelsHandler, so that library models can override third-party
      // bytecode annotations
      restrictiveAnnotationHandler = new RestrictiveAnnotationHandler(config);
      handlerListBuilder.add(restrictiveAnnotationHandler);
    }
    if (config.handleTestAssertionLibraries()) {
      handlerListBuilder.add(new AssertionHandler(methodNameUtil));
    }
    handlerListBuilder.add(new GuavaAssertionsHandler());
    LibraryModelsHandler libraryModelsHandler = new LibraryModelsHandler(config);
    handlerListBuilder.add(libraryModelsHandler);
    handlerListBuilder.add(StreamNullabilityPropagatorFactory.getRxStreamNullabilityPropagator());
    handlerListBuilder.add(StreamNullabilityPropagatorFactory.getJavaStreamNullabilityPropagator());
    handlerListBuilder.add(
        StreamNullabilityPropagatorFactory.fromSpecs(
            libraryModelsHandler.getStreamNullabilitySpecs()));
    handlerListBuilder.add(new ContractHandler(config));
    handlerListBuilder.add(new ApacheThriftIsSetHandler());
    handlerListBuilder.add(new GrpcHandler());
    handlerListBuilder.add(new RequiresNonNullHandler());
    handlerListBuilder.add(new EnsuresNonNullHandler());
    handlerListBuilder.add(new EnsuresNonNullIfHandler());
    handlerListBuilder.add(new SynchronousCallbackHandler());
    if (config.serializationIsActive() && config.getSerializationConfig().fieldInitInfoEnabled) {
      handlerListBuilder.add(
          new FieldInitializationSerializationHandler(config.getSerializationConfig()));
    }
    if (config.checkOptionalEmptiness()) {
      handlerListBuilder.add(new OptionalEmptinessHandler(config, methodNameUtil));
    }
    if (config.checkContracts()) {
      handlerListBuilder.add(new ContractCheckHandler(config));
    }
    handlerListBuilder.add(new LombokHandler(config));
    handlerListBuilder.add(new FluentFutureHandler(config));
    CompositeHandler mainHandler = new CompositeHandler(handlerListBuilder.build());

    // Initialize the handlers that need to be aware of the main handler
    if (restrictiveAnnotationHandler != null) {
      restrictiveAnnotationHandler.initMainHandler(mainHandler);
    }
    libraryModelsHandler.initMainHandler(mainHandler);

    return mainHandler;
  }