/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.util.Config
 *  com.l7tech.util.ConfigFactory
 *  com.l7tech.util.ExceptionUtils
 *  com.l7tech.util.TextUtils
 *  jakarta.inject.Inject
 *  jakarta.inject.Provider
 *  org.springframework.aop.ThrowsAdvice
 *  org.springframework.context.ApplicationEvent
 *  org.springframework.context.ApplicationEventPublisher
 */
package com.l7tech.server.util;

import com.l7tech.server.event.admin.AdminError;
import com.l7tech.server.event.system.Started;
import com.l7tech.server.event.system.SystemAdminError;
import com.l7tech.server.util.JaasUtils;
import com.l7tech.server.util.MySqlFailureThrowsAdvice;
import com.l7tech.server.util.PostStartupApplicationListener;
import com.l7tech.util.Config;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.TextUtils;
import jakarta.inject.Inject;
import jakarta.inject.Provider;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.springframework.aop.ThrowsAdvice;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationEventPublisher;

public class AuditingThrowsAdvice
implements ThrowsAdvice,
PropertyChangeListener,
PostStartupApplicationListener {
    private static final Logger a;
    private static final boolean b;
    private static final String c;
    private static final String d;
    private static final String e;
    private static final String f;
    private static final String g;
    private static final int h;
    private final AtomicBoolean i = new AtomicBoolean(true);
    private final AtomicReference<Collection<Class>> j = new AtomicReference(Collections.emptyList());
    private final AtomicReference<Collection<Class>> k = new AtomicReference(Collections.emptyList());
    @Inject
    private Provider<ApplicationEventPublisher> publisher;
    private final Config l;
    private static final String[] m;

    public AuditingThrowsAdvice(Config config) {
        this.l = config;
    }

    public void onApplicationEvent(ApplicationEvent applicationEvent) {
        if (applicationEvent instanceof Started) {
            this.a();
        }
    }

    public void afterThrowing(Method method, Object[] objectArray, Object object, Exception exception) {
        if (this.a(exception)) {
            if (JaasUtils.getCurrentUser() != null) {
                ((ApplicationEventPublisher)this.publisher.get()).publishEvent((ApplicationEvent)new AdminError(this, this.b(exception)));
            } else {
                ((ApplicationEventPublisher)this.publisher.get()).publishEvent((ApplicationEvent)new SystemAdminError((Object)this, this.b(exception)));
            }
        }
    }

    @Override
    public void propertyChange(PropertyChangeEvent propertyChangeEvent) {
        if (propertyChangeEvent.getPropertyName() != null && propertyChangeEvent.getPropertyName().startsWith(m[12])) {
            this.a();
        }
    }

    static boolean a(Exception exception, boolean bl2, Collection<Class> collection, Collection<Class> collection2) {
        boolean bl3 = bl2;
        Class clazz = AuditingThrowsAdvice.a(collection, exception);
        Class clazz2 = AuditingThrowsAdvice.a(collection2, exception);
        if (clazz != null && clazz2 != null) {
            if (!clazz.equals(clazz2)) {
                bl3 = clazz2.isAssignableFrom(clazz);
            }
        } else if (clazz != null) {
            bl3 = true;
        } else if (clazz2 != null) {
            bl3 = false;
        }
        return bl3;
    }

    private void a() {
        String[] stringArray = m;
        this.i.set(this.l.getBooleanProperty(stringArray[8], true));
        AuditingThrowsAdvice.a(this.j, this.l.getProperty(stringArray[4], ""));
        AuditingThrowsAdvice.a(this.k, this.l.getProperty(stringArray[10], ""));
    }

    private static void a(AtomicReference<Collection<Class>> atomicReference, String string) {
        String[] stringArray;
        ArrayList arrayList = new ArrayList();
        String[] stringArray2 = m;
        for (String string2 : stringArray = string.trim().split(stringArray2[2])) {
            try {
                if (string2.isEmpty()) {
                    continue;
                }
            }
            catch (ClassNotFoundException classNotFoundException) {
                throw AuditingThrowsAdvice.a(classNotFoundException);
            }
            try {
                arrayList.add(Class.forName(string2));
            }
            catch (ClassNotFoundException classNotFoundException) {
                stringArray2 = m;
                a.log(Level.WARNING, stringArray2[0] + string2 + stringArray2[5]);
            }
        }
        atomicReference.set(Collections.unmodifiableCollection(arrayList));
    }

    private boolean a(Exception exception) {
        return b && !MySqlFailureThrowsAdvice.a(exception) && AuditingThrowsAdvice.a(exception, this.i.get(), this.j.get(), this.k.get());
    }

    private static Class a(Collection<Class> collection, Exception exception) {
        Class clazz = null;
        for (Class clazz2 : collection) {
            if (!clazz2.isInstance(exception) || clazz != null && !clazz.isAssignableFrom(clazz2)) continue;
            clazz = clazz2;
        }
        return clazz;
    }

    private String b(Exception exception) {
        return m[9] + TextUtils.truncateStringAtEnd((String)ExceptionUtils.getMessage((Throwable)exception), (int)h);
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[14];
                var3_1 = 0;
                var2_2 = "&w5\u0010[:\u0010\b02\u0011_2\u0012\u0006t{\u001aQ0\u001b\u001fd2\u0010Gs\u001d\u0003q(\f\t0\u0011\u0001v2\u0018\\!\u001f\u001by4\u0011\tt\u0016\u000ee?\u0016]}\u001f\u000b}2\u0011l+\u001d\n`/\u0016F=\rA\u00033cp\u001e\u000ee?\u0016]}\u001f\u000b}2\u0011l+\u001d\n`/\u0016F=\rAu#\u001cE&\u001a\nc\u001e\u000ee?\u0016]}\u001f\u000b}2\u0011l+\u001d\n`/\u0016F=\rAy5\u001cE&\u001a\nc\u0002H>'\f\u007f6QEd\n\ns3QZ6\f\u0019u)QH7\u0013\u0006~u\u001e\\7\u0017\u001bU#\u001cL#\n\u0006\u007f5\f\u001e\u000ee?\u0016]}\u001f\u000b}2\u0011l+\u001d\n`/\u0016F=\rAy5\u001cE&\u001a\nc%\u000ee?\u0016]}\u001f\u000b}2\u0011l+\u001d\n`/\u0016F=\rAt>\u0019H&\u0012\u001bY5\u001cE&\u001a\nc\u0016.t6\u0016G:\r\u001bb:\u000b@%\u001bOU)\rF!DO\u001e\u000ee?\u0016]}\u001f\u000b}2\u0011l+\u001d\n`/\u0016F=\rAu#\u001cE&\u001a\nc\u0016.t6\u0016G:\r\u001bb:\u000b@%\u001bOU)\rF!DO";
                var4_3 = "&w5\u0010[:\u0010\b02\u0011_2\u0012\u0006t{\u001aQ0\u001b\u001fd2\u0010Gs\u001d\u0003q(\f\t0\u0011\u0001v2\u0018\\!\u001f\u001by4\u0011\tt\u0016\u000ee?\u0016]}\u001f\u000b}2\u0011l+\u001d\n`/\u0016F=\rA\u00033cp\u001e\u000ee?\u0016]}\u001f\u000b}2\u0011l+\u001d\n`/\u0016F=\rAu#\u001cE&\u001a\nc\u001e\u000ee?\u0016]}\u001f\u000b}2\u0011l+\u001d\n`/\u0016F=\rAy5\u001cE&\u001a\nc\u0002H>'\f\u007f6QEd\n\ns3QZ6\f\u0019u)QH7\u0013\u0006~u\u001e\\7\u0017\u001bU#\u001cL#\n\u0006\u007f5\f\u001e\u000ee?\u0016]}\u001f\u000b}2\u0011l+\u001d\n`/\u0016F=\rAy5\u001cE&\u001a\nc%\u000ee?\u0016]}\u001f\u000b}2\u0011l+\u001d\n`/\u0016F=\rAt>\u0019H&\u0012\u001bY5\u001cE&\u001a\nc\u0016.t6\u0016G:\r\u001bb:\u000b@%\u001bOU)\rF!DO\u001e\u000ee?\u0016]}\u001f\u000b}2\u0011l+\u001d\n`/\u0016F=\rAu#\u001cE&\u001a\nc\u0016.t6\u0016G:\r\u001bb:\u000b@%\u001bOU)\rF!DO".length();
                var1_4 = 48;
                var0_5 = -1;
lbl7:
                // 2 sources

                while (true) {
                    v0 = 117;
                    v1 = ++var0_5;
                    v2 = var2_2.substring(v1, v1 + var1_4);
                    v3 = -1;
                    break block9;
                    break;
                }
lbl13:
                // 1 sources

                while (true) {
                    var5[var3_1++] = AuditingThrowsAdvice.a(v0, AuditingThrowsAdvice.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "\u0006m7\u001eUu\u0017\u0003u:\u0019d#\u0015\u0002h'\u001eN5\u0005I%\u0006m7\u001eUu\u0017\u0003u:\u0019d#\u0015\u0002h'\u001eN5\u0005I|6\u0011@.\u001a\u0013Q=\u0014M.\u0012\u0002k";
                    var4_3 = "\u0006m7\u001eUu\u0017\u0003u:\u0019d#\u0015\u0002h'\u001eN5\u0005I%\u0006m7\u001eUu\u0017\u0003u:\u0019d#\u0015\u0002h'\u001eN5\u0005I|6\u0011@.\u001a\u0013Q=\u0014M.\u0012\u0002k".length();
                    var1_4 = 22;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 125;
                        v4 = ++var0_5;
                        v2 = var2_2.substring(v4, v4 + var1_4);
                        v3 = 0;
                        break block9;
                        break;
                    }
                    break;
                }
lbl28:
                // 1 sources

                while (true) {
                    var5[var3_1++] = AuditingThrowsAdvice.a(v0, AuditingThrowsAdvice.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    break block10;
                    break;
                }
            }
            switch (v3) {
                default: {
                    ** continue;
                }
                ** case 0:
lbl39:
                // 1 sources

                ** continue;
            }
        }
        AuditingThrowsAdvice.m = var5;
        AuditingThrowsAdvice.c = AuditingThrowsAdvice.m[1];
        AuditingThrowsAdvice.f = AuditingThrowsAdvice.m[3];
        AuditingThrowsAdvice.g = AuditingThrowsAdvice.m[9];
        AuditingThrowsAdvice.e = AuditingThrowsAdvice.m[7];
        AuditingThrowsAdvice.d = AuditingThrowsAdvice.m[13];
        AuditingThrowsAdvice.a = Logger.getLogger(AuditingThrowsAdvice.class.getName());
        var0_6 = AuditingThrowsAdvice.m;
        AuditingThrowsAdvice.b = ConfigFactory.getBooleanProperty((String)var0_6[6], (boolean)true);
        AuditingThrowsAdvice.h = 255 - var0_6[11].length();
    }

    private static ClassNotFoundException a(ClassNotFoundException classNotFoundException) {
        return classNotFoundException;
    }

    private static char[] a(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0xB);
        }
        return cArray;
    }

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String a(int n2, char[] cArray) {
        char[] cArray2;
        block11: {
            int n3;
            int n4;
            int n5;
            block10: {
                n5 = n2;
                cArray2 = cArray;
                n4 = cArray.length;
                n3 = 0;
                if (!true) break block10;
                n4 = n4;
                if (n4 <= n3) break block11;
            }
            do {
                n5 = n5;
                cArray2 = cArray2;
                int n6 = n3;
                cArray2[n6] = (char)(cArray2[n6] ^ (n5 ^ (switch (n3 % 7) {
                    case 0 -> 26;
                    case 1 -> 101;
                    case 2 -> 46;
                    case 3 -> 10;
                    case 4 -> 92;
                    case 5 -> 38;
                    default -> 11;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

