From a8a423b68dd6c374f29bc9037d95cac71280c3fe Mon Sep 17 00:00:00 2001 From: Colin Simmonds Date: Thu, 27 Jul 2017 13:32:22 -0400 Subject: [PATCH] Fix for Issue #819: remove expensive calls to Class.getCanonicalName() from the success path for injection on Android. --- java/dagger/android/AndroidInjection.java | 16 +++++----------- .../android/DispatchingAndroidInjector.java | 2 +- .../android/support/AndroidSupportInjection.java | 8 +------- java/dagger/internal/Preconditions.java | 4 +++- 4 files changed, 10 insertions(+), 20 deletions(-) diff --git a/java/dagger/android/AndroidInjection.java b/java/dagger/android/AndroidInjection.java index a3d92d8586a..53d58541f45 100644 --- a/java/dagger/android/AndroidInjection.java +++ b/java/dagger/android/AndroidInjection.java @@ -56,7 +56,7 @@ public static void inject(Activity activity) { checkNotNull( activityInjector, "%s.activityInjector() returned null", - application.getClass().getCanonicalName()); + application.getClass()); activityInjector.inject(activity); } @@ -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 fragmentInjector = hasFragmentInjector.fragmentInjector(); checkNotNull( fragmentInjector, "%s.fragmentInjector() returned null", - hasFragmentInjector.getClass().getCanonicalName()); + hasFragmentInjector.getClass()); fragmentInjector.inject(fragment); } @@ -141,7 +135,7 @@ public static void inject(Service service) { checkNotNull( serviceInjector, "%s.serviceInjector() returned null", - application.getClass().getCanonicalName()); + application.getClass()); serviceInjector.inject(service); } @@ -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); } @@ -198,7 +192,7 @@ public static void inject(ContentProvider contentProvider) { checkNotNull( contentProviderInjector, "%s.contentProviderInjector() returned null", - application.getClass().getCanonicalName()); + application.getClass()); contentProviderInjector.inject(contentProvider); } diff --git a/java/dagger/android/DispatchingAndroidInjector.java b/java/dagger/android/DispatchingAndroidInjector.java index 1a9584f4b1d..98187b28a6a 100644 --- a/java/dagger/android/DispatchingAndroidInjector.java +++ b/java/dagger/android/DispatchingAndroidInjector.java @@ -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; diff --git a/java/dagger/android/support/AndroidSupportInjection.java b/java/dagger/android/support/AndroidSupportInjection.java index 6a22fbd522c..7fcf098ee84 100644 --- a/java/dagger/android/support/AndroidSupportInjection.java +++ b/java/dagger/android/support/AndroidSupportInjection.java @@ -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 fragmentInjector = hasSupportFragmentInjector.supportFragmentInjector(); checkNotNull( fragmentInjector, "%s.supportFragmentInjector() returned null", - hasSupportFragmentInjector.getClass().getCanonicalName()); + hasSupportFragmentInjector.getClass()); fragmentInjector.inject(fragment); } diff --git a/java/dagger/internal/Preconditions.java b/java/dagger/internal/Preconditions.java index 99e180530c1..9b9a2de7cdd 100644 --- a/java/dagger/internal/Preconditions.java +++ b/java/dagger/internal/Preconditions.java @@ -75,8 +75,10 @@ public static 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; }