1 16 17 package com.google.inject; 18 19 import com.google.inject.spi.SourceProviders; 20 import com.google.inject.util.Objects; 21 22 25 class InternalFactoryToProviderAdapter<T> implements InternalFactory<T> { 26 27 private final Provider<? extends T> provider; 28 private final Object source; 29 30 public InternalFactoryToProviderAdapter(Provider<? extends T> provider) { 31 this(provider, SourceProviders.UNKNOWN_SOURCE); 32 } 33 34 public InternalFactoryToProviderAdapter( 35 Provider<? extends T> provider, Object source) { 36 this.provider = Objects.nonNull(provider, "provider"); 37 this.source = Objects.nonNull(source, "source"); 38 } 39 40 public T get(InternalContext context) { 41 T provided = provider.get(); 42 if (provided != null) { 43 return provided; 44 } 45 46 if (("I'm a bad hack".equals( 48 System.getProperty("guice.allow.nulls.bad.bad.bad")))) { 49 return provided; 50 } 51 String message = String.format(ErrorMessages.NULL_PROVIDED, source); 52 throw new ProvisionException(context.getExternalContext(), 53 new NullPointerException (message)); 54 } 55 56 public String toString() { 57 return provider.toString(); 58 } 59 } 60 | Popular Tags |