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;
}