Skip to content

Commit 2ce7836

Browse files
Create the draft implementation for the Customizer inner class
1 parent 0115277 commit 2ce7836

File tree

1 file changed

+30
-92
lines changed

1 file changed

+30
-92
lines changed

testutil/src/main/java/org/spine3/test/NullToleranceTest.java

Lines changed: 30 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)