Skip to content

Commit

Permalink
Fix for Issue google#819: remove expensive calls to Class.getCanonica…
Browse files Browse the repository at this point in the history
…lName() from the success path for injection on Android.
  • Loading branch information
ctsimmonds committed Jul 27, 2017
1 parent 7649d68 commit a8a423b
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 20 deletions.
16 changes: 5 additions & 11 deletions java/dagger/android/AndroidInjection.java
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public static void inject(Activity activity) {
checkNotNull(
activityInjector,
"%s.activityInjector() returned null",
application.getClass().getCanonicalName());
application.getClass());

activityInjector.inject(activity);
}
Expand Down Expand Up @@ -85,18 +85,12 @@ public static void inject(Activity activity) {
public static void inject(Fragment fragment) {
checkNotNull(fragment, "fragment");
HasFragmentInjector hasFragmentInjector = findHasFragmentInjector(fragment);
Log.d(
TAG,
String.format(
"An injector for %s was found in %s",
fragment.getClass().getCanonicalName(),
hasFragmentInjector.getClass().getCanonicalName()));

AndroidInjector<Fragment> fragmentInjector = hasFragmentInjector.fragmentInjector();
checkNotNull(
fragmentInjector,
"%s.fragmentInjector() returned null",
hasFragmentInjector.getClass().getCanonicalName());
hasFragmentInjector.getClass());

fragmentInjector.inject(fragment);
}
Expand Down Expand Up @@ -141,7 +135,7 @@ public static void inject(Service service) {
checkNotNull(
serviceInjector,
"%s.serviceInjector() returned null",
application.getClass().getCanonicalName());
application.getClass());

serviceInjector.inject(service);
}
Expand Down Expand Up @@ -170,7 +164,7 @@ public static void inject(BroadcastReceiver broadcastReceiver, Context context)
checkNotNull(
broadcastReceiverInjector,
"%s.broadcastReceiverInjector() returned null",
application.getClass().getCanonicalName());
application.getClass());

broadcastReceiverInjector.inject(broadcastReceiver);
}
Expand Down Expand Up @@ -198,7 +192,7 @@ public static void inject(ContentProvider contentProvider) {
checkNotNull(
contentProviderInjector,
"%s.contentProviderInjector() returned null",
application.getClass().getCanonicalName());
application.getClass());

contentProviderInjector.inject(contentProvider);
}
Expand Down
2 changes: 1 addition & 1 deletion java/dagger/android/DispatchingAndroidInjector.java
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public boolean maybeInject(T instance) {
checkNotNull(
factory.create(instance),
"%s.create(I) should not return null.",
factory.getClass().getCanonicalName());
factory.getClass());

injector.inject(instance);
return true;
Expand Down
8 changes: 1 addition & 7 deletions java/dagger/android/support/AndroidSupportInjection.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,19 +54,13 @@ public final class AndroidSupportInjection {
public static void inject(Fragment fragment) {
checkNotNull(fragment, "fragment");
HasSupportFragmentInjector hasSupportFragmentInjector = findHasFragmentInjector(fragment);
Log.d(
TAG,
String.format(
"An injector for %s was found in %s",
fragment.getClass().getCanonicalName(),
hasSupportFragmentInjector.getClass().getCanonicalName()));

AndroidInjector<Fragment> fragmentInjector =
hasSupportFragmentInjector.supportFragmentInjector();
checkNotNull(
fragmentInjector,
"%s.supportFragmentInjector() returned null",
hasSupportFragmentInjector.getClass().getCanonicalName());
hasSupportFragmentInjector.getClass());

fragmentInjector.inject(fragment);
}
Expand Down
4 changes: 3 additions & 1 deletion java/dagger/internal/Preconditions.java
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,10 @@ public static <T> T checkNotNull(
throw new IllegalArgumentException(
"errorMessageTemplate has more than one format specifier");
}
final String errorMessageArgString = (errorMessageArg instanceof Class) ?
((Class<?>) errorMessageArg).getCanonicalName() : String.valueOf(errorMessageArg);
throw new NullPointerException(
errorMessageTemplate.replaceFirst("%s", String.valueOf(errorMessageArg)));
errorMessageTemplate.replaceFirst("%s", errorMessageArgString));
}
return reference;
}
Expand Down

0 comments on commit a8a423b

Please sign in to comment.