/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.message.MimeKnob
 *  com.l7tech.message.XmlKnob
 *  com.l7tech.policy.assertion.AssertionStatus
 *  com.l7tech.util.Charsets
 *  com.l7tech.util.ExceptionUtils
 *  com.l7tech.util.IOUtils
 *  com.l7tech.util.PoolByteArrayOutputStream
 *  com.l7tech.xml.soap.SoapFaultUtils
 *  com.l7tech.xml.soap.SoapUtil
 *  com.l7tech.xml.soap.SoapVersion
 *  javax.jms.BytesMessage
 *  javax.jms.Message
 *  javax.jms.TextMessage
 *  org.springframework.context.ApplicationEvent
 */
package com.l7tech.server.transport.jms2;

import com.l7tech.message.MimeKnob;
import com.l7tech.message.XmlKnob;
import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.server.event.FaultProcessed;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.server.policy.PolicyVersionException;
import com.l7tech.server.transport.jms.JmsBag;
import com.l7tech.server.transport.jms.JmsRuntimeException;
import com.l7tech.server.transport.jms2.JmsEndpointConfig;
import com.l7tech.server.transport.jms2.JmsRequestHandlerImpl;
import com.l7tech.util.Charsets;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.IOUtils;
import com.l7tech.util.PoolByteArrayOutputStream;
import com.l7tech.xml.soap.SoapFaultUtils;
import com.l7tech.xml.soap.SoapUtil;
import com.l7tech.xml.soap.SoapVersion;
import java.io.ByteArrayInputStream;
import java.io.OutputStream;
import java.util.concurrent.Callable;
import java.util.logging.Level;
import javax.jms.BytesMessage;
import javax.jms.Message;
import javax.jms.TextMessage;
import org.springframework.context.ApplicationEvent;
import org.xml.sax.SAXException;

class d
implements Callable<Object> {
    final boolean[] val$messageTooLarge;
    final AssertionStatus[] val$status;
    final PolicyEnforcementContext val$context;
    final Message val$jmsResponse;
    final boolean[] val$responseSuccess;
    final Message val$jmsRequest;
    final JmsBag val$bag;
    final JmsEndpointConfig val$endpointCfg;
    final JmsRequestHandlerImpl this$0;
    private static final String[] a;

    /*
     * Ignored method signature, as it can't be verified against descriptor
     */
    d(JmsRequestHandlerImpl jmsRequestHandlerImpl, boolean[] blArray, AssertionStatus[] assertionStatusArray, PolicyEnforcementContext policyEnforcementContext, Message message, boolean[] blArray2, Message message2, JmsBag jmsBag, JmsEndpointConfig jmsEndpointConfig) {
        this.this$0 = jmsRequestHandlerImpl;
        this.val$messageTooLarge = blArray;
        this.val$status = assertionStatusArray;
        this.val$context = policyEnforcementContext;
        this.val$jmsResponse = message;
        this.val$responseSuccess = blArray2;
        this.val$jmsRequest = message2;
        this.val$bag = jmsBag;
        this.val$endpointCfg = jmsEndpointConfig;
    }

    /*
     * Unable to fully structure code
     * Could not resolve type clashes
     */
    @Override
    public Object call() throws Exception {
        block39: {
            block40: {
                block38: {
                    block42: {
                        var1_1 = null;
                        var2_2 = null;
                        var3_3 = false;
                        var4_4 /* !! */  = null;
                        if (this.val$messageTooLarge[0]) break block42;
                        try {
                            block36: {
                                block37: {
                                    block43: {
                                        this.val$status[0] = this.this$0.e.processMessageNoAudit(this.val$context);
                                        this.val$context.setPolicyResult(this.val$status[0]);
                                        JmsRequestHandlerImpl.a.finest(d.a[8] + String.valueOf(this.val$status[0]));
                                        if (this.val$context.getResponse().getKnob(XmlKnob.class) != null) ** GOTO lbl17
                                        if (this.val$context.getResponse().getKnob(MimeKnob.class) == null) break block36;
                                        break block43;
                                        catch (PolicyVersionException v0) {
                                            throw d.a(v0);
                                        }
                                    }
                                    try {
                                        block44: {
                                            if (this.val$status[0] == AssertionStatus.NONE) break block37;
                                            break block44;
                                            catch (PolicyVersionException v1) {
                                                throw d.a(v1);
                                            }
                                        }
                                        if (!this.val$context.isStealthResponseMode()) break block37;
                                    }
                                    catch (PolicyVersionException v2) {
                                        throw d.a(v2);
                                    }
                                    var9_5 = d.a;
                                    JmsRequestHandlerImpl.a.info(var9_5[7]);
                                    var3_3 = true;
                                    break block38;
                                }
                                try {
                                    if (!this.val$context.getResponse().isXml()) {
                                        JmsRequestHandlerImpl.a.log(Level.INFO, d.a[5], this.val$context.getRequest().getMimeKnob().getOuterContentType());
                                    }
                                }
                                catch (PolicyVersionException v3) {
                                    throw d.a(v3);
                                }
                                var4_4 /* !! */  = this.val$context.getResponse().getMimeKnob().getFirstPart().getInputStream(false);
                                break block38;
                            }
                            var9_5 = d.a;
                            JmsRequestHandlerImpl.a.finer(var9_5[3]);
                            var4_4 /* !! */  = null;
                        }
                        catch (PolicyVersionException var5_6) {
                            var9_5 = d.a;
                            var6_10 = var9_5[0];
                            JmsRequestHandlerImpl.a.log(Level.INFO, var6_10);
                            var1_1 = var6_10;
                            var2_2 = SoapUtil.FC_CLIENT;
                        }
                        catch (Throwable var5_7) {
                            var9_5 = d.a;
                            JmsRequestHandlerImpl.a.log(Level.WARNING, var9_5[9] + ExceptionUtils.getMessage((Throwable)var5_7), ExceptionUtils.getDebugException((Throwable)var5_7));
                            var1_1 = var5_7.getMessage();
                            if (var1_1 == null) {
                                var1_1 = var5_7.toString();
                            }
                            break block38;
                        }
                    }
                    var9_5 = d.a;
                    var5_8 = var9_5[4];
                    JmsRequestHandlerImpl.a.log(Level.INFO, (String)var5_8);
                    var1_1 = var5_8;
                    var2_2 = SoapUtil.FC_CLIENT;
                }
                try {
                    if (var4_4 /* !! */  != null) break block39;
                    if (!this.val$context.isStealthResponseMode()) break block40;
                }
                catch (PolicyVersionException v4) {
                    throw d.a(v4);
                }
                var9_5 = d.a;
                JmsRequestHandlerImpl.a.info(var9_5[1]);
                var3_3 = true;
                break block39;
            }
            if (var1_1 == null) {
                var1_1 = this.val$status[0].getMessage();
            }
            try {
                try {
                    v5 = this.val$context.getService() != null ? this.val$context.getService().getSoapVersion() : SoapVersion.UNKNOWN;
                }
                catch (PolicyVersionException v6) {
                    throw d.a(v6);
                }
                try {
                    v7 = var2_2 == null ? SoapUtil.FC_SERVER : var2_2;
                }
                catch (PolicyVersionException v8) {
                    throw d.a(v8);
                }
                var5_8 = SoapFaultUtils.generateSoapFaultXml((SoapVersion)v5, (String)v7, (String)var1_1, null, (String)"");
                var4_4 /* !! */  = new ByteArrayInputStream(var5_8.getBytes(Charsets.UTF8));
                try {
                    if (var5_8 != null) {
                        this.this$0.g.publishEvent((ApplicationEvent)new FaultProcessed(this.val$context, (String)var5_8, this.this$0.e));
                    }
                }
                catch (PolicyVersionException v9) {
                    throw d.a(v9);
                }
            }
            catch (SAXException var5_9) {
                throw new JmsRuntimeException(var5_9);
            }
        }
        if (!var3_3) {
            var6_10 = new PoolByteArrayOutputStream();
            try {
                IOUtils.copyStream(var4_4 /* !! */ , (OutputStream)var6_10);
                var5_8 = var6_10.toByteArray();
            }
            finally {
                var6_10.close();
            }
            if (this.val$jmsResponse instanceof BytesMessage) {
                var6_10 = (BytesMessage)this.val$jmsResponse;
                var6_10.writeBytes((byte[])var5_8);
            } else if (this.val$jmsResponse instanceof TextMessage) {
                var6_10 = (TextMessage)this.val$jmsResponse;
                var9_5 = d.a;
                var6_10.setText(new String((byte[])var5_8, var9_5[6]));
            } else {
                var9_5 = d.a;
                throw new JmsRuntimeException(var9_5[10] + this.val$jmsResponse.getClass().getName() + var9_5[2]);
            }
            this.val$responseSuccess[0] = this.this$0.a(this.val$jmsRequest, this.val$jmsResponse, this.val$bag, this.val$endpointCfg, this.val$context);
        } else {
            this.val$responseSuccess[0] = true;
        }
        return null;
    }

    private static PolicyVersionException a(PolicyVersionException policyVersionException) {
        return policyVersionException;
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[11];
                var3_1 = 0;
                var2_2 = "e\u0010vC7\u0015e\u0017\u0007bP7\u0014cR\u0011'B=FpYUhC&\u0002pC\u0010c\u0016$\u0003cD\u001chXr\tw\u0017\u0005hZ;\u0005hQy\u001a'D7\u0015aX\u001btSr\u0002pC\u0014'W$\u0007x[\u0014eZ7FpY\u0011'E&\u0003p[\u0001o\u0016?\tuRUnEr\u0015tC['x=\u00121D\u0010iR;\bv\u0017\u0007bE\"\t\u007fD\u0010'[7\u0015bV\u0012b\u00181\u0019UHX>\u001f1u\fsS!+tD\u0006fQ7FpY\u0011'b7\u001eez\u0010tE3\u0001t\u0017\u0014uSr\u0015dG\u0005hD&\u0003u\u0014y\u001a'D7\u0015aX\u001btSr\u0014tT\u0010n@7\u0002\u0019e\u0010vC7\u0015e\u0017\u0018bE!\u0007vRUsY=F}V\u0007`S4e\u0010tF=\bbRUjS!\u0015pP\u0010'_!F\u007fX\u001b*n\u001f*=\u0017\u0001oSr%~Y\u0001bX&2hG\u0010'_!\\1LEz\u0005b!A\u001bjLg\u001ak_1\u001f1E\u0010sC \btSUbD \tc\u0017\u0014iRr\u0015eR\u0014kB:F|X\u0011b\u0016;\u00151D\u0010s\u0018r(~CUtS<\u0002xY\u0012'D7\u0015aX\u001btSr\u000btD\u0006fQ7H\u001ag\u001ak_1\u001f1E\u0010tC>\u0012tSUnXr\u0015eV\u0001rEr";
                var4_3 = "e\u0010vC7\u0015e\u0017\u0007bP7\u0014cR\u0011'B=FpYUhC&\u0002pC\u0010c\u0016$\u0003cD\u001chXr\tw\u0017\u0005hZ;\u0005hQy\u001a'D7\u0015aX\u001btSr\u0002pC\u0014'W$\u0007x[\u0014eZ7FpY\u0011'E&\u0003p[\u0001o\u0016?\tuRUnEr\u0015tC['x=\u00121D\u0010iR;\bv\u0017\u0007bE\"\t\u007fD\u0010'[7\u0015bV\u0012b\u00181\u0019UHX>\u001f1u\fsS!+tD\u0006fQ7FpY\u0011'b7\u001eez\u0010tE3\u0001t\u0017\u0014uSr\u0015dG\u0005hD&\u0003u\u0014y\u001a'D7\u0015aX\u001btSr\u0014tT\u0010n@7\u0002\u0019e\u0010vC7\u0015e\u0017\u0018bE!\u0007vRUsY=F}V\u0007`S4e\u0010tF=\bbRUjS!\u0015pP\u0010'_!F\u007fX\u001b*n\u001f*=\u0017\u0001oSr%~Y\u0001bX&2hG\u0010'_!\\1LEz\u0005b!A\u001bjLg\u001ak_1\u001f1E\u0010sC \btSUbD \tc\u0017\u0014iRr\u0015eR\u0014kB:F|X\u0011b\u0016;\u00151D\u0010s\u0018r(~CUtS<\u0002xY\u0012'D7\u0015aX\u001btSr\u000btD\u0006fQ7H\u001ag\u001ak_1\u001f1E\u0010tC>\u0012tSUnXr\u0015eV\u0001rEr".length();
                var1_4 = 49;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = d.a(v0, d.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "=B+\u001cm]7\u0017Th\u000eu@2\u001d\u001a8\u000brJ;\u000bI!\u0017z\t\u00145ih\u0014xZ-\u0019]-C=\r;[&^i\t-\u001dT,Y|\t";
                    var4_3 = "=B+\u001cm]7\u0017Th\u000eu@2\u001d\u001a8\u000brJ;\u000bI!\u0017z\t\u00145ih\u0014xZ-\u0019]-C=\r;[&^i\t-\u001dT,Y|\t".length();
                    var1_4 = 40;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 127;
                        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++] = d.a(v0, d.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;
            }
        }
        d.a = var5;
    }

    private static char[] a(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x21);
        }
        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 -> 7;
                    case 1 -> 69;
                    case 2 -> 55;
                    case 3 -> 6;
                    case 4 -> 98;
                    case 5 -> 86;
                    default -> 33;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

