@@ -565,105 +565,43 @@ public NullToleranceTest build() {
565565 }
566566
567567 private void addDefaultTypeValues () {
568- boolean providedDefaultString = false ;
569- boolean providedDefaultSet = false ;
570- boolean providedDefaultList = false ;
571- boolean providedDefaultMap = false ;
572- boolean providedDefaultQueue = false ;
573- for (Object clazz : defaultValues .keySet ()) {
574- final Class castedClass = (Class ) clazz ;
575- providedDefaultString = isProvidedDefaultString (providedDefaultString , castedClass );
576- providedDefaultSet = isProvidedDefaultSet (providedDefaultSet , castedClass );
577- providedDefaultList = isProvidedDefaultList (providedDefaultList , castedClass );
578- providedDefaultMap = isProvidedDefaultMap (providedDefaultMap , castedClass );
579- providedDefaultQueue = isProvidedDefaultQueue (providedDefaultQueue , castedClass );
580- }
581-
582- // If no default value has been set for {@code String},
583- // add an empty string literal as one.
584- addDefaultStringIfNeeded (providedDefaultString );
585- // If no default value has been set for {@code Set},
586- // add an empty {@code Set} as one.
587- addDefaultSetIfNeeded (providedDefaultSet );
588- // If no default value has been set for {@code List},
589- // add an empty {@code List} as one.
590- addDefaultListIfNeeded (providedDefaultList );
591- // If no default value has been set for {@code Map},
592- // add an empty {@code Map} as one.
593- addDefaultMapIfNeeded (providedDefaultMap );
594- // If no default value has been set for {@code Queue},
595- // add an empty {@code Queue} as one.
596- addDefaultQueueIfNeeded (providedDefaultQueue );
597- }
598-
599- private static boolean isProvidedDefaultQueue (boolean providedDefaultQueue , Class castedClass ) {
600- boolean result = providedDefaultQueue ;
601- if (!providedDefaultQueue ) {
602- result = Queue .class .isAssignableFrom (castedClass );
603- }
604- return result ;
605- }
606-
607- private static boolean isProvidedDefaultMap (boolean providedDefaultMap , Class castedClass ) {
608- boolean result = providedDefaultMap ;
609- if (!providedDefaultMap ) {
610- result = Map .class .isAssignableFrom (castedClass );
611- }
612- return result ;
613- }
614568
615- private static boolean isProvidedDefaultList (boolean providedDefaultList , Class castedClass ) {
616- boolean result = providedDefaultList ;
617- if (!providedDefaultList ) {
618- result = List .class .isAssignableFrom (castedClass );
619- }
620- return result ;
621- }
622-
623- private static boolean isProvidedDefaultSet (boolean providedDefaultSet , Class castedClass ) {
624- boolean result = providedDefaultSet ;
625- if (!providedDefaultSet ) {
626- result = Set .class .isAssignableFrom (castedClass );
627- }
628- return result ;
629- }
630-
631- private static boolean isProvidedDefaultString (boolean providedString , Class castedClass ) {
632- boolean result = providedString ;
633- if (!providedString ) {
634- result = String .class .isAssignableFrom (castedClass );
635- }
636- return result ;
637- }
638-
639- private void addDefaultQueueIfNeeded (boolean providedDefaultQueue ) {
640- if (!providedDefaultQueue ) {
641- defaultValues .put (Queue .class , newPriorityQueue ());
642- }
643- }
644-
645- private void addDefaultMapIfNeeded (boolean providedDefaultMap ) {
646- if (!providedDefaultMap ) {
647- defaultValues .put (Map .class , emptyMap ());
648- }
569+ final Customizer <String > stringCustomizer = new Customizer <>(STRING_DEFAULT_VALUE , defaultValues );
570+ final Customizer <Queue > queueCustomizer = new Customizer (newPriorityQueue (), defaultValues );
571+ final Customizer <Set > setCustomizer = new Customizer (emptySet (), defaultValues );
572+ final Customizer <List > listCustomizer = new Customizer (emptyList (), defaultValues );
573+ final Customizer <Map > mapCustomizer = new Customizer (emptyMap (), defaultValues );
574+ final String defaultStringValue = stringCustomizer .getCustomizedValue (String .class );
575+ defaultValues .put (String .class , defaultStringValue );
576+ final Queue <?> defaultQueue = queueCustomizer .getCustomizedValue (Queue .class );
577+ defaultValues .put (Queue .class , defaultQueue );
578+ final Set <?> defaultSet = setCustomizer .getCustomizedValue (Set .class );
579+ defaultValues .put (Set .class , defaultSet );
580+ final List <?> defaultList = listCustomizer .getCustomizedValue (List .class );
581+ defaultValues .put (List .class , defaultList );
582+ final Map <?, ?> defaultMap = mapCustomizer .getCustomizedValue (Map .class );
583+ defaultValues .put (Map .class , defaultMap );
649584 }
585+ }
650586
651- private void addDefaultListIfNeeded (boolean providedDefaultList ) {
652- if (!providedDefaultList ) {
653- defaultValues .put (List .class , emptyList ());
654- }
655- }
587+ private static class Customizer <T > {
588+ private final T defaultValue ;
589+ private final Map <Class <?>, ?> defaultValues ;
656590
657- private void addDefaultSetIfNeeded (boolean providedDefaultSet ) {
658- if (!providedDefaultSet ) {
659- defaultValues .put (Set .class , emptySet ());
660- }
591+ public Customizer (T defaultValue , Map <Class <?>, ?> defaultValues ) {
592+ this .defaultValue = defaultValue ;
593+ this .defaultValues = defaultValues ;
661594 }
662595
663- private void addDefaultStringIfNeeded (boolean providedString ) {
664- if (!providedString ) {
665- defaultValues .put (String .class , STRING_DEFAULT_VALUE );
596+ public T getCustomizedValue (Class <T > typeOfInterest ) {
597+ for (Map .Entry <Class <?>, ?> entry : defaultValues .entrySet ()) {
598+ final boolean customValuePresent = typeOfInterest .isAssignableFrom (entry .getKey ());
599+ if (customValuePresent ) {
600+ return (T ) entry .getValue ();
601+ }
666602 }
603+ return defaultValue ;
667604 }
668605 }
606+
669607}
0 commit comments