2021-06-27 20:44:35 +00:00
package androidx.fragment.app ;
import androidx.annotation.NonNull ;
import androidx.collection.SimpleArrayMap ;
import androidx.fragment.app.Fragment ;
import c.d.b.a.a ;
import java.lang.reflect.InvocationTargetException ;
public class FragmentFactory {
private static final SimpleArrayMap < ClassLoader , SimpleArrayMap < String , Class < ? > > > sClassCacheMap = new SimpleArrayMap < > ( ) ;
public static boolean isFragmentClass ( @NonNull ClassLoader classLoader , @NonNull String str ) {
try {
return Fragment . class . isAssignableFrom ( loadClass ( classLoader , str ) ) ;
} catch ( ClassNotFoundException unused ) {
return false ;
}
}
@NonNull
private static Class < ? > loadClass ( @NonNull ClassLoader classLoader , @NonNull String str ) throws ClassNotFoundException {
SimpleArrayMap < ClassLoader , SimpleArrayMap < String , Class < ? > > > simpleArrayMap = sClassCacheMap ;
SimpleArrayMap < String , Class < ? > > simpleArrayMap2 = simpleArrayMap . get ( classLoader ) ;
if ( simpleArrayMap2 = = null ) {
simpleArrayMap2 = new SimpleArrayMap < > ( ) ;
simpleArrayMap . put ( classLoader , simpleArrayMap2 ) ;
}
Class < ? > cls = simpleArrayMap2 . get ( str ) ;
if ( cls ! = null ) {
return cls ;
}
Class < ? > cls2 = Class . forName ( str , false , classLoader ) ;
simpleArrayMap2 . put ( str , cls2 ) ;
return cls2 ;
}
/* JADX DEBUG: Type inference failed for r3v3. Raw type applied. Possible types: java.lang.Class<?>, java.lang.Class<? extends androidx.fragment.app.Fragment> */
@NonNull
public static Class < ? extends Fragment > loadFragmentClass ( @NonNull ClassLoader classLoader , @NonNull String str ) {
try {
return loadClass ( classLoader , str ) ;
} catch ( ClassNotFoundException e ) {
2021-07-13 20:23:20 +00:00
throw new Fragment . InstantiationException ( a . u ( " Unable to instantiate fragment " , str , " : make sure class name exists " ) , e ) ;
2021-06-27 20:44:35 +00:00
} catch ( ClassCastException e2 ) {
2021-07-13 20:23:20 +00:00
throw new Fragment . InstantiationException ( a . u ( " Unable to instantiate fragment " , str , " : make sure class is a valid subclass of Fragment " ) , e2 ) ;
2021-06-27 20:44:35 +00:00
}
}
@NonNull
public Fragment instantiate ( @NonNull ClassLoader classLoader , @NonNull String str ) {
try {
return ( Fragment ) loadFragmentClass ( classLoader , str ) . getConstructor ( new Class [ 0 ] ) . newInstance ( new Object [ 0 ] ) ;
} catch ( InstantiationException e ) {
2021-07-13 20:23:20 +00:00
throw new Fragment . InstantiationException ( a . u ( " Unable to instantiate fragment " , str , " : make sure class name exists, is public, and has an empty constructor that is public " ) , e ) ;
2021-06-27 20:44:35 +00:00
} catch ( IllegalAccessException e2 ) {
2021-07-13 20:23:20 +00:00
throw new Fragment . InstantiationException ( a . u ( " Unable to instantiate fragment " , str , " : make sure class name exists, is public, and has an empty constructor that is public " ) , e2 ) ;
2021-06-27 20:44:35 +00:00
} catch ( NoSuchMethodException e3 ) {
2021-07-13 20:23:20 +00:00
throw new Fragment . InstantiationException ( a . u ( " Unable to instantiate fragment " , str , " : could not find Fragment constructor " ) , e3 ) ;
2021-06-27 20:44:35 +00:00
} catch ( InvocationTargetException e4 ) {
2021-07-13 20:23:20 +00:00
throw new Fragment . InstantiationException ( a . u ( " Unable to instantiate fragment " , str , " : calling Fragment constructor caused an exception " ) , e4 ) ;
2021-06-27 20:44:35 +00:00
}
}
}