org_apache_struts_beanvalidation_BeanValidationInterceptorTest_java
org.jboss.logging.Logger
public static <T> T getMessageLogger(final Class<T> type, final String category, final Locale locale) {
        return AccessController.doPrivileged(new PrivilegedAction<T>(){

            @Override
            public T run() {
                Constructor constructor;
                String language = locale.getLanguage();
                String country = locale.getCountry();
                String variant = locale.getVariant();
                Class loggerClass = null;
                ClassLoader classLoader = type.getClassLoader();
                String typeName = type.getName();
                if (variant != null && variant.length() > 0) {
                    try {
                        loggerClass = Class.forName(Logger.join(typeName, "$logger", language, country, variant), true, classLoader).asSubclass(type);
                    }
                    catch (ClassNotFoundException e) {
                        // empty catch block
                    }
                }
                if (loggerClass == null && country != null && country.length() > 0) {
                    try {
                        loggerClass = Class.forName(Logger.join(typeName, "$logger", language, country, null), true, classLoader).asSubclass(type);
                    }
                    catch (ClassNotFoundException e) {
                        // empty catch block
                    }
                }
                if (loggerClass == null && language != null && language.length() > 0) {
                    try {
                        loggerClass = Class.forName(Logger.join(typeName, "$logger", language, null, null), true, classLoader).asSubclass(type);
                    }
                    catch (ClassNotFoundException e) {
                        // empty catch block
                    }
                }
                if (loggerClass == null) {
                    try {
                        loggerClass = Class.forName(Logger.join(typeName, "$logger", null, null, null), true, classLoader).asSubclass(type);
                    }
                    catch (ClassNotFoundException e) {
                        throw new IllegalArgumentException("Invalid logger " + type + " (implementation not found in " + classLoader + ")");
                    }
                }
                try {
                    constructor = loggerClass.getConstructor(Logger.class);
                }
                catch (NoSuchMethodException e) {
                    throw new IllegalArgumentException("Logger implementation " + loggerClass + " has no matching constructor");
                }
                try {
                    return constructor.newInstance(Logger.getLogger(category));
                }
                catch (InstantiationException e) {
                    throw new IllegalArgumentException("Logger implementation " + loggerClass + " could not be instantiated", e);
                }
                catch (IllegalAccessException e) {
                    throw new IllegalArgumentException("Logger implementation " + loggerClass + " could not be instantiated", e);
                }
                catch (InvocationTargetException e) {
                    throw new IllegalArgumentException("Logger implementation " + loggerClass + " could not be instantiated", e.getCause());
                }
            }
        });
    }
 -> java.security.AccessController.doPrivileged(java.security.PrivilegedAction): java.lang.Object -> java.util.Locale.getLanguage(): java.lang.String -> java.util.Locale.getCountry(): java.lang.String -> java.util.Locale.getVariant(): java.lang.String -> java.lang.Class.getClassLoader(): java.lang.ClassLoader -> java.lang.Class.getName(): java.lang.String -> java.lang.String.length(): int -> java.lang.String.length(): int -> java.lang.String.length(): int -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.String.length(): int -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.lang.Class.forName(java.lang.String,boolean,java.lang.ClassLoader): java.lang.Class -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.lang.Class.forName(java.lang.String,boolean,java.lang.ClassLoader): java.lang.Class -> java.lang.Class.asSubclass(java.lang.Class): java.lang.Class -> java.lang.Class.getConstructor(java.lang.Class[]): java.lang.reflect.Constructor -> java.lang.Class.getClassLoader(): java.lang.ClassLoader -> java.security.AccessController.doPrivileged(java.security.PrivilegedAction): java.lang.Object -> java.lang.System.getProperty(java.lang.String): java.lang.String -> java.util.ServiceLoader.load(java.lang.Class,java.lang.ClassLoader): java.util.ServiceLoader -> java.util.ServiceLoader.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.logging.LogManager.getLogManager(): java.util.logging.LogManager -> java.lang.Object.getClass(): java.lang.Class -> java.lang.Class.forName(java.lang.String,boolean,java.lang.ClassLoader): java.lang.Class -> java.lang.Class.forName(java.lang.String,boolean,java.lang.ClassLoader): java.lang.Class -> java.lang.Class.forName(java.lang.String,boolean,java.lang.ClassLoader): java.lang.Class -> java.lang.Class.forName(java.lang.String,boolean,java.lang.ClassLoader): java.lang.Class -> java.lang.Class.getPackage(): java.lang.Package -> java.lang.Package.getName(): java.lang.String -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Class.newInstance(): java.lang.Object -> java.lang.Class.newInstance(): java.lang.Object -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.util.Map.containsKey(java.lang.Object): boolean -> java.util.Map.containsKey(java.lang.Object): boolean -> java.lang.System.getProperties(): java.util.Properties -> java.util.Properties.containsKey(java.lang.Object): boolean -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Map.containsKey(java.lang.Object): boolean -> java.util.regex.Pattern.matcher(java.lang.CharSequence): java.util.regex.Matcher -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.String.lastIndexOf(java.lang.String): int -> java.lang.String.length(): int -> java.lang.String.substring(int): java.lang.String -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.util.concurrent.ConcurrentMap.putIfAbsent(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Object.getClass(): java.lang.Class -> java.lang.Class.getName(): java.lang.String -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Class.newInstance(): java.lang.Object -> java.lang.Class.newInstance(): java.lang.Object -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.util.Map.containsKey(java.lang.Object): boolean -> java.util.Map.containsKey(java.lang.Object): boolean -> java.lang.System.getProperties(): java.util.Properties -> java.util.Properties.containsKey(java.lang.Object): boolean -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Map.containsKey(java.lang.Object): boolean -> java.util.regex.Pattern.matcher(java.lang.CharSequence): java.util.regex.Matcher -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.String.lastIndexOf(java.lang.String): int -> java.lang.String.length(): int -> java.lang.String.substring(int): java.lang.String -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.util.concurrent.ConcurrentMap.putIfAbsent(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.reflect.Constructor.newInstance(java.lang.Object[]): java.lang.Object
 [CALL] [CALL] [EXIT] -> java.security.AccessController.doPrivileged(java.security.PrivilegedAction): java.lang.Object [CALL] -> java.util.Locale.getLanguage(): java.lang.String -> java.util.Locale.getCountry(): java.lang.String -> java.util.Locale.getVariant(): java.lang.String -> java.lang.Class.getClassLoader(): java.lang.ClassLoader -> java.lang.Class.getName(): java.lang.String -> java.lang.String.length(): int -> java.lang.String.length(): int -> java.lang.String.length(): int [CALL] [CALL] -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.String.length(): int -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String [EXIT] [EXIT] -> java.lang.Class.forName(java.lang.String,boolean,java.lang.ClassLoader): java.lang.Class [CALL] [CALL] -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String [EXIT] [EXIT] -> java.lang.Class.forName(java.lang.String,boolean,java.lang.ClassLoader): java.lang.Class -> java.lang.Class.asSubclass(java.lang.Class): java.lang.Class -> java.lang.Class.getConstructor(java.lang.Class[]): java.lang.reflect.Constructor [CALL] [CALL] [CALL] -> java.lang.Class.getClassLoader(): java.lang.ClassLoader -> java.security.AccessController.doPrivileged(java.security.PrivilegedAction): java.lang.Object [CALL] [CALL] -> java.lang.System.getProperty(java.lang.String): java.lang.String [EXIT] [EXIT] -> java.util.ServiceLoader.load(java.lang.Class,java.lang.ClassLoader): java.util.ServiceLoader -> java.util.ServiceLoader.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.logging.LogManager.getLogManager(): java.util.logging.LogManager -> java.lang.Object.getClass(): java.lang.Class -> java.lang.Class.forName(java.lang.String,boolean,java.lang.ClassLoader): java.lang.Class [EXIT] [CALL] -> java.lang.Class.forName(java.lang.String,boolean,java.lang.ClassLoader): java.lang.Class -> java.lang.Class.forName(java.lang.String,boolean,java.lang.ClassLoader): java.lang.Class -> java.lang.Class.forName(java.lang.String,boolean,java.lang.ClassLoader): java.lang.Class [CALL] -> java.lang.Class.getPackage(): java.lang.Package -> java.lang.Package.getName(): java.lang.String [CALL] [CALL] [CALL] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [CALL] [CALL] [EXIT] [CALL] -> java.util.Map.get(java.lang.Object): java.lang.Object [EXIT] -> java.util.Map.get(java.lang.Object): java.lang.Object [EXIT] [CALL] [CALL] [CALL] -> java.lang.Class.newInstance(): java.lang.Object [CALL] [EXIT] [EXIT] [CALL] -> java.lang.Class.newInstance(): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [EXIT] -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String [CALL] [CALL] [CALL] -> java.util.Map.containsKey(java.lang.Object): boolean -> java.util.Map.containsKey(java.lang.Object): boolean [CALL] -> java.lang.System.getProperties(): java.util.Properties -> java.util.Properties.containsKey(java.lang.Object): boolean [EXIT] -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Map.containsKey(java.lang.Object): boolean -> java.util.regex.Pattern.matcher(java.lang.CharSequence): java.util.regex.Matcher -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object [EXIT] -> java.util.Map.get(java.lang.Object): java.lang.Object [EXIT] [EXIT] [EXIT] [CALL] [EXIT] -> java.lang.String.lastIndexOf(java.lang.String): int -> java.lang.String.length(): int -> java.lang.String.substring(int): java.lang.String [EXIT] [CALL] [CALL] [EXIT] [CALL] -> java.util.Map.get(java.lang.Object): java.lang.Object [EXIT] [CALL] -> java.util.concurrent.ConcurrentMap.putIfAbsent(java.lang.Object,java.lang.Object): java.lang.Object [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] -> java.util.Map.get(java.lang.Object): java.lang.Object [EXIT] -> java.util.Map.get(java.lang.Object): java.lang.Object [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] -> java.lang.Object.getClass(): java.lang.Class -> java.lang.Class.getName(): java.lang.String [CALL] [CALL] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [CALL] [CALL] [EXIT] [CALL] -> java.util.Map.get(java.lang.Object): java.lang.Object [EXIT] -> java.util.Map.get(java.lang.Object): java.lang.Object [EXIT] [CALL] [CALL] [CALL] -> java.lang.Class.newInstance(): java.lang.Object [CALL] [EXIT] [EXIT] [CALL] -> java.lang.Class.newInstance(): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [EXIT] -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String [CALL] [CALL] [CALL] -> java.util.Map.containsKey(java.lang.Object): boolean -> java.util.Map.containsKey(java.lang.Object): boolean [CALL] -> java.lang.System.getProperties(): java.util.Properties -> java.util.Properties.containsKey(java.lang.Object): boolean [EXIT] -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Map.containsKey(java.lang.Object): boolean -> java.util.regex.Pattern.matcher(java.lang.CharSequence): java.util.regex.Matcher -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.regex.Matcher.group(int): java.lang.String -> java.lang.String.toLowerCase(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.regex.Matcher.find(): boolean -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object [EXIT] -> java.util.Map.get(java.lang.Object): java.lang.Object [EXIT] [EXIT] [EXIT] [CALL] [EXIT] -> java.lang.String.lastIndexOf(java.lang.String): int -> java.lang.String.length(): int -> java.lang.String.substring(int): java.lang.String [EXIT] [CALL] [CALL] [EXIT] [CALL] -> java.util.Map.get(java.lang.Object): java.lang.Object [EXIT] [CALL] -> java.util.concurrent.ConcurrentMap.putIfAbsent(java.lang.Object,java.lang.Object): java.lang.Object [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] -> java.util.Map.get(java.lang.Object): java.lang.Object [EXIT] -> java.util.Map.get(java.lang.Object): java.lang.Object [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] -> java.lang.reflect.Constructor.newInstance(java.lang.Object[]): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] [EXIT] [EXIT]