core/src/com/google/inject/internal/InternalProvisionException.java
static void onNullInjectedIntoNonNullableDependency(Object source, Dependency<?> dependency)
      throws InternalProvisionException {
    // Hack to allow null parameters to @Provides methods, for backwards compatibility.
    if (dependency.getInjectionPoint().getMember() instanceof Method) {
      Method annotated = (Method) dependency.getInjectionPoint().getMember();
      if (annotated.isAnnotationPresent(Provides.class)) {
        switch (InternalFlags.getNullableProvidesOption()) {
          case ERROR:
            break; // break out & let the below exception happen
          case IGNORE:
            return; // user doesn't care about injecting nulls to non-@Nullables.
          case WARN:
            // Warn only once, otherwise we spam logs too much.
            if (warnedDependencies.add(dependency)) {
              logger.log(
                  Level.WARNING,
                  "Guice injected null into {0} (a {1}), please mark it @Nullable."
                      + " Use -Dguice_check_nullable_provides_params=ERROR to turn this into an"
                      + " error.",
                  new Object[] {
                    Messages.formatParameter(dependency), Messages.convert(dependency.getKey())
                  });
            }
            return;
        }
      }
    }

    Object formattedDependency =
        (dependency.getParameterIndex() != -1)
            ? Messages.formatParameter(dependency)
            : StackTraceElements.forMember(dependency.getInjectionPoint().getMember());

    throw InternalProvisionException.create(
            "null returned by binding at %s%n but %s is not @Nullable", source, formattedDependency)
        .addSource(source);
  }
static void onNullInjectedIntoNonNullableDependency(Object source, Dependency<?> dependency)
      throws InternalProvisionException {
    // Hack to allow null parameters to @Provides methods, for backwards compatibility.
    if (dependency.getInjectionPoint().getMember() instanceof Method) {
      Method annotated = (Method) dependency.getInjectionPoint().getMember();
      if (annotated.isAnnotationPresent(Provides.class)) {
        switch (InternalFlags.getNullableProvidesOption()) {
          case ERROR:
            break; // break out & let the below exception happen
          case IGNORE:
            return; // user doesn't care about injecting nulls to non-@Nullables.
          case WARN:
            // Warn only once, otherwise we spam logs too much.
            if (warnedDependencies.add(dependency)) {
              logger.log(
                  Level.WARNING,
                  "Guice injected null into {0} (a {1}), please mark it @Nullable."
                      + " Use -Dguice_check_nullable_provides_params=ERROR to turn this into an"
                      + " error.",
                  new Object[] {
                    Messages.formatParameter(dependency), Messages.convert(dependency.getKey())
                  });
            }
            return;
        }
      }
    }

    Object formattedDependency =
        (dependency.getParameterIndex() != -1)
            ? Messages.formatParameter(dependency)
            : StackTraceElements.forMember(dependency.getInjectionPoint().getMember());

    throw InternalProvisionException.create(
            "null returned by binding at %s%n but %s is not @Nullable", source, formattedDependency)
        .addSource(source);
  }
static void onNullInjectedIntoNonNullableDependency ( Object source , Dependency < ? > dependency ) throws InternalProvisionException { // Hack to allow null parameters to @Provides methods, for backwards compatibility. if ( dependency . getInjectionPoint ( ) . getMember ( ) instanceof Method ) { Method annotated = ( Method ) dependency . getInjectionPoint ( ) . getMember ( ) ; if ( annotated . isAnnotationPresent ( Provides . class ) ) { switch ( InternalFlags . getNullableProvidesOption ( ) ) { case ERROR : break ; // break out & let the below exception happen case IGNORE : return ; // user doesn't care about injecting nulls to non-@Nullables. case WARN : // Warn only once, otherwise we spam logs too much. if ( warnedDependencies . add ( dependency ) ) { logger . log ( Level . WARNING , "Guice injected null into {0} (a {1}), please mark it @Nullable." + " Use -Dguice_check_nullable_provides_params=ERROR to turn this into an" + " error." , new Object [ ] { Messages . formatParameter ( dependency ) , Messages . convert ( dependency . getKey ( ) ) } ) ; } return ; } } } Object formattedDependency = ( dependency . getParameterIndex ( ) != - 1 ) ? Messages . formatParameter ( dependency ) : StackTraceElements . forMember ( dependency . getInjectionPoint ( ) . getMember ( ) ) ; throw InternalProvisionException . create ( "null returned by binding at %s%n but %s is not @Nullable" , source , formattedDependency ) . addSource ( source ) ; }
Returns {@code value} if it is non-null or allowed to be null. Otherwise a message is added and
an {@code InternalProvisionException} is thrown.
Returns {