/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.common.mime.ContentTypeHeader
 *  com.l7tech.gateway.common.service.PublishedService
 *  com.l7tech.gateway.common.transport.jms.JmsConnection
 *  com.l7tech.message.Header
 *  com.l7tech.message.HeadersKnob
 *  com.l7tech.message.HeadersKnobSupport
 *  com.l7tech.message.JmsKnob
 *  com.l7tech.message.Message
 *  com.l7tech.message.MessageKnob
 *  com.l7tech.objectmodel.EntityType
 *  com.l7tech.objectmodel.Goid
 *  com.l7tech.policy.assertion.AssertionStatus
 *  com.l7tech.util.Charsets
 *  com.l7tech.util.Config
 *  com.l7tech.util.ConfigFactory
 *  com.l7tech.util.ExceptionUtils
 *  com.l7tech.util.GoidUpgradeMapper
 *  com.l7tech.util.Pair
 *  com.l7tech.util.ResourceUtils
 *  javax.jms.BytesMessage
 *  javax.jms.Destination
 *  javax.jms.JMSException
 *  javax.jms.Message
 *  javax.jms.MessageProducer
 *  javax.jms.Session
 *  javax.jms.TextMessage
 *  org.springframework.context.ApplicationContext
 *  org.springframework.context.ApplicationEventPublisher
 */
package com.l7tech.server.transport.jms2;

import com.l7tech.common.mime.ContentTypeHeader;
import com.l7tech.gateway.common.service.PublishedService;
import com.l7tech.gateway.common.transport.jms.JmsConnection;
import com.l7tech.message.Header;
import com.l7tech.message.HeadersKnob;
import com.l7tech.message.HeadersKnobSupport;
import com.l7tech.message.JmsKnob;
import com.l7tech.message.MessageKnob;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.Goid;
import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.server.MessageProcessor;
import com.l7tech.server.StashManagerFactory;
import com.l7tech.server.audit.AuditContextFactory;
import com.l7tech.server.audit.MessageSummaryAuditFactory;
import com.l7tech.server.cluster.ClusterMaster;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.server.message.PolicyEnforcementContextFactory;
import com.l7tech.server.transport.jms.BytesMessageInputStream;
import com.l7tech.server.transport.jms.JmsBag;
import com.l7tech.server.transport.jms.JmsMessageExpiredException;
import com.l7tech.server.transport.jms.JmsRuntimeException;
import com.l7tech.server.transport.jms.JmsUtil;
import com.l7tech.server.transport.jms2.JmsEndpointConfig;
import com.l7tech.server.transport.jms2.JmsRequestHandler;
import com.l7tech.server.transport.jms2.c;
import com.l7tech.server.transport.jms2.d;
import com.l7tech.server.transport.jms2.e;
import com.l7tech.server.util.EventChannel;
import com.l7tech.util.Charsets;
import com.l7tech.util.Config;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.GoidUpgradeMapper;
import com.l7tech.util.Pair;
import com.l7tech.util.ResourceUtils;
import java.io.ByteArrayInputStream;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.util.Collections;
import java.util.HashMap;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.jms.BytesMessage;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.NamingException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationEventPublisher;

public class JmsRequestHandlerImpl
implements JmsRequestHandler {
    private static final Logger a;
    private static final boolean b;
    private static final long c = 0x280000L;
    private final Config d;
    private final MessageProcessor e;
    private final StashManagerFactory f;
    private final ApplicationEventPublisher g;
    private final ClusterMaster h;
    private AuditContextFactory i;
    private MessageSummaryAuditFactory j;
    private MessageProducer k;
    private static final String[] l;

    public JmsRequestHandlerImpl(ApplicationContext applicationContext) {
        if (applicationContext == null) {
            String[] stringArray = l;
            throw new IllegalArgumentException(stringArray[50]);
        }
        String[] stringArray = l;
        this.d = (Config)applicationContext.getBean(stringArray[17], Config.class);
        this.e = (MessageProcessor)((Object)applicationContext.getBean(stringArray[9], MessageProcessor.class));
        this.f = (StashManagerFactory)applicationContext.getBean(stringArray[18], StashManagerFactory.class);
        this.g = (ApplicationEventPublisher)applicationContext.getBean(stringArray[30], EventChannel.class);
        this.h = (ClusterMaster)applicationContext.getBean(stringArray[4], ClusterMaster.class);
        this.i = (AuditContextFactory)applicationContext.getBean(stringArray[12], AuditContextFactory.class);
        this.j = (MessageSummaryAuditFactory)applicationContext.getBean(stringArray[10], MessageSummaryAuditFactory.class);
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     * Unable to fully structure code
     * Could not resolve type clashes
     */
    @Override
    public void onMessage(JmsEndpointConfig var1_1, JmsBag var2_2, boolean var3_3, Message var4_4) throws JmsRuntimeException {
        block109: {
            block105: {
                block108: {
                    block107: {
                        block106: {
                            block122: {
                                block121: {
                                    block94: {
                                        block99: {
                                            block95: {
                                                block98: {
                                                    block97: {
                                                        block96: {
                                                            block117: {
                                                                var11_5 = new AssertionStatus[]{AssertionStatus.UNDEFINED};
                                                                var12_6 = new boolean[]{false};
                                                                var13_7 = new boolean[]{false};
                                                                var14_8 = var1_1.getConnection().properties();
                                                                var15_9 = new HeadersKnobSupport();
                                                                if (!JmsRequestHandlerImpl.b) break block94;
                                                                try {
                                                                    block116: {
                                                                        if (var1_1.isQueue()) break block94;
                                                                        break block116;
                                                                        catch (Exception v0) {
                                                                            throw JmsRequestHandlerImpl.a(v0);
                                                                        }
                                                                    }
                                                                    if (this.h.isMaster()) break block94;
                                                                }
                                                                catch (Exception v1) {
                                                                    throw JmsRequestHandlerImpl.a(v1);
                                                                }
                                                                var11_5[0] = AssertionStatus.NONE;
                                                                var12_6[0] = true;
                                                                var29_10 = JmsRequestHandlerImpl.l;
                                                                JmsRequestHandlerImpl.a.fine(var29_10[21]);
                                                                if (!var3_3) break block95;
                                                                if (var11_5[0] == AssertionStatus.NONE) ** GOTO lbl37
                                                                if (var2_2.getMessageProducer() == null) break block96;
                                                                break block117;
                                                                catch (Exception v2) {
                                                                    throw JmsRequestHandlerImpl.a(v2);
                                                                }
                                                            }
                                                            try {
                                                                block118: {
                                                                    if (!this.a(var4_4, var2_2.getMessageProducer())) break block96;
                                                                    break block118;
                                                                    catch (Exception v3) {
                                                                        throw JmsRequestHandlerImpl.a(v3);
                                                                    }
                                                                }
                                                                v4 = true;
                                                                break block97;
                                                            }
                                                            catch (Exception v5) {
                                                                throw JmsRequestHandlerImpl.a(v5);
                                                            }
                                                        }
                                                        v4 = false;
                                                    }
                                                    var16_17 = v4;
                                                    var17_26 = var2_2.getSession();
                                                    try {
                                                        if (!var12_6[0] || !var16_17) break block98;
                                                    }
                                                    catch (Exception v6) {
                                                        throw JmsRequestHandlerImpl.a(v6);
                                                    }
                                                    try {
                                                        var29_10 = JmsRequestHandlerImpl.l;
                                                        JmsRequestHandlerImpl.a.log(Level.FINE, var29_10[33]);
                                                        var17_26.commit();
                                                    }
                                                    catch (Exception var18_29) {
                                                        var29_10 = JmsRequestHandlerImpl.l;
                                                        JmsRequestHandlerImpl.a.log(Level.WARNING, var29_10[25], var18_29);
                                                    }
                                                    break block95;
                                                }
                                                try {
                                                    var29_10 = JmsRequestHandlerImpl.l;
                                                    JmsRequestHandlerImpl.a.log(Level.FINE, var29_10[11]);
                                                    var17_26.rollback();
                                                }
                                                catch (Exception var18_30) {
                                                    var29_10 = JmsRequestHandlerImpl.l;
                                                    JmsRequestHandlerImpl.a.log(Level.WARNING, var29_10[36], var18_30);
                                                }
                                            }
                                            try {
                                                if (this.k == null) break block99;
                                                this.k.close();
                                                break block99;
                                            }
                                            catch (IOException v7) {
                                                throw JmsRequestHandlerImpl.a(v7);
                                            }
                                            {
                                                catch (JMSException var16_18) {
                                                    var29_10 = JmsRequestHandlerImpl.l;
                                                    JmsRequestHandlerImpl.a.log(Level.FINE, var29_10[8] + JmsUtil.getJMSErrorMessage(var16_18), ExceptionUtils.getDebugException((Throwable)var16_18));
                                                }
                                            }
                                        }
                                        return;
                                    }
                                    try {
                                        try {
                                            block100: {
                                                var16_19 = 0L;
                                                var7_35 = this.a(var4_4, var14_8);
                                                if (var4_4 instanceof TextMessage) {
                                                    var16_19 = ((TextMessage)var4_4).getText().length() * 2;
                                                    var6_36 /* !! */  = new ByteArrayInputStream(((TextMessage)var4_4).getText().getBytes(Charsets.UTF8));
                                                } else if (var4_4 instanceof BytesMessage) {
                                                    var16_19 = ((BytesMessage)var4_4).getBodyLength();
                                                    var6_36 /* !! */  = new BytesMessageInputStream((BytesMessage)var4_4);
                                                } else {
                                                    this.a(var1_1, var4_4);
                                                    var6_36 /* !! */  = null;
                                                }
                                                var18_31 = var1_1.getEndpoint().getRequestMaxSize() < 0L ? ((var20_37 = this.d.getLongProperty((var29_11 = JmsRequestHandlerImpl.l)[7], 0x280000L)) >= 0L ? var20_37 : com.l7tech.message.Message.getMaxBytes()) : var1_1.getEndpoint().getRequestMaxSize();
                                                if (var18_31 <= 0L) break block100;
                                                try {
                                                    block119: {
                                                        if (var16_19 <= var18_31) break block100;
                                                        break block119;
                                                        catch (Exception v8) {
                                                            throw JmsRequestHandlerImpl.a(v8);
                                                        }
                                                    }
                                                    var13_7[0] = true;
                                                }
                                                catch (Exception v9) {
                                                    throw JmsRequestHandlerImpl.a(v9);
                                                }
                                            }
                                            var20_38 = new HashMap<String, Object>();
                                            var21_41 = var4_4.getPropertyNames();
                                            while (var21_41.hasMoreElements()) {
                                                var22_42 = (String)var21_41.nextElement();
                                                var23_43 = var4_4.getObjectProperty(var22_42);
                                                var20_38.put(var22_42, var23_43);
                                                var29_11 = JmsRequestHandlerImpl.l;
                                                var15_9.addHeader(var22_42, var23_43, var29_11[43]);
                                            }
                                            var8_44 = Collections.unmodifiableMap(var20_38);
                                            var9_45 = Collections.unmodifiableMap(JmsUtil.getJmsHeaders(var4_4));
                                            var21_41 = null;
                                            var22_42 = var1_1.getConnection().properties().getProperty(JmsConnection.JMS_MSG_PROP_WITH_SOAPACTION);
                                            if (var22_42 != null) {
                                                var21_41 = (String)var8_44.get(var22_42);
                                                try {
                                                    if (JmsRequestHandlerImpl.a.isLoggable(Level.FINER)) {
                                                        JmsRequestHandlerImpl.a.finer(JmsRequestHandlerImpl.l[20] + var22_42 + "=" + (String)var21_41);
                                                    }
                                                }
                                                catch (Exception v10) {
                                                    throw JmsRequestHandlerImpl.a(v10);
                                                }
                                            }
                                            var10_46 = var21_41;
                                        }
                                        catch (IOException | JMSException var16_20) {
                                            var29_12 = JmsRequestHandlerImpl.l;
                                            throw new JmsRuntimeException(var29_12[26], var16_20);
                                        }
                                        try {
                                            var5_47 = this.a(var2_2, var1_1, var4_4);
                                        }
                                        catch (JMSException var16_21) {
                                            var29_11 = JmsRequestHandlerImpl.l;
                                            throw new JmsRuntimeException(var29_11[29], var16_21);
                                        }
                                        try {
                                            block101: {
                                                var16_22 = new Goid[]{PublishedService.DEFAULT_GOID};
                                                try {
                                                    var17_27 = var14_8.getProperty(JmsConnection.PROP_IS_HARDWIRED_SERVICE);
                                                    try {
                                                        if (var17_27 == null || !Boolean.parseBoolean(var17_27)) break block101;
                                                    }
                                                    catch (Exception v11) {
                                                        throw JmsRequestHandlerImpl.a(v11);
                                                    }
                                                    var17_27 = var14_8.getProperty(JmsConnection.PROP_HARDWIRED_SERVICE_ID);
                                                    var16_22[0] = GoidUpgradeMapper.mapId((EntityType)EntityType.SERVICE, (String)var17_27);
                                                }
                                                catch (Exception var17_28) {
                                                    var29_11 = JmsRequestHandlerImpl.l;
                                                    JmsRequestHandlerImpl.a.log(Level.WARNING, var29_11[46], var17_28);
                                                }
                                            }
                                            var17_27 = new com.l7tech.message.Message();
                                            var17_27.initialize(this.f.createStashManager(), var7_35, (InputStream)var6_36 /* !! */ , 0L);
                                            var17_27.attachJmsKnob((JmsKnob)new c(this, var4_4, var8_44, (String)var10_46, var16_22, var9_45));
                                            var17_27.attachKnob(HeadersKnob.class, (MessageKnob)var15_9);
                                            try {
                                                block103: {
                                                    block102: {
                                                        var19_48 /* !! */  = var4_4.getJMSReplyTo();
                                                        if (var19_48 /* !! */  != null) ** GOTO lbl175
                                                        try {
                                                            block120: {
                                                                if (var4_4.getJMSCorrelationID() == null) break block102;
                                                                break block120;
                                                                catch (Exception v12) {
                                                                    throw JmsRequestHandlerImpl.a(v12);
                                                                }
                                                            }
                                                            v13 = true;
                                                            break block103;
                                                        }
                                                        catch (Exception v14) {
                                                            throw JmsRequestHandlerImpl.a(v14);
                                                        }
                                                    }
                                                    v13 = false;
                                                }
                                                var18_32 = v13;
                                            }
                                            catch (JMSException var19_49) {
                                                throw new JmsRuntimeException(var19_49);
                                            }
                                            var19_48 /* !! */  = PolicyEnforcementContextFactory.createPolicyEnforcementContext((com.l7tech.message.Message)var17_27, null, var18_32);
                                            try {
                                                this.i.doWithNewAuditContext(new d(this, var13_7, var11_5, (PolicyEnforcementContext)var19_48 /* !! */ , var5_47, var12_6, var4_4, var2_2, var1_1), new e(this, var11_5, (PolicyEnforcementContext)var19_48 /* !! */ ));
                                            }
                                            catch (JMSException var20_39) {
                                                var29_11 = JmsRequestHandlerImpl.l;
                                                throw new JmsRuntimeException(var29_11[38], var20_39);
                                            }
                                            catch (Exception var20_40) {
                                                throw new JmsRuntimeException(var20_40);
                                            }
                                            finally {
                                                ResourceUtils.closeQuietly((Closeable)var19_48 /* !! */ );
                                            }
                                        }
                                        catch (IOException var16_23) {
                                            throw new RuntimeException(var16_23);
                                        }
                                    }
                                    catch (Throwable var25_51) {
                                        block115: {
                                            block110: {
                                                block114: {
                                                    block113: {
                                                        block112: {
                                                            try {
                                                                block111: {
                                                                    try {
                                                                        try {
                                                                            try {
                                                                                if (!var3_3) break block110;
                                                                                if (var11_5[0] == AssertionStatus.NONE) break block111;
                                                                            }
                                                                            catch (Exception v15) {
                                                                                throw JmsRequestHandlerImpl.a(v15);
                                                                            }
                                                                            if (var2_2.getMessageProducer() == null) break block112;
                                                                        }
                                                                        catch (Exception v16) {
                                                                            throw JmsRequestHandlerImpl.a(v16);
                                                                        }
                                                                        if (!this.a(var4_4, var2_2.getMessageProducer())) break block112;
                                                                    }
                                                                    catch (Exception v17) {
                                                                        throw JmsRequestHandlerImpl.a(v17);
                                                                    }
                                                                }
                                                                v18 = true;
                                                                break block113;
                                                            }
                                                            catch (Exception v19) {
                                                                throw JmsRequestHandlerImpl.a(v19);
                                                            }
                                                        }
                                                        v18 = false;
                                                    }
                                                    var26_52 = v18;
                                                    var27_54 = var2_2.getSession();
                                                    try {
                                                        if (!var12_6[0] || !var26_52) break block114;
                                                    }
                                                    catch (Exception v20) {
                                                        throw JmsRequestHandlerImpl.a(v20);
                                                    }
                                                    try {
                                                        var29_13 = JmsRequestHandlerImpl.l;
                                                        JmsRequestHandlerImpl.a.log(Level.FINE, var29_13[23]);
                                                        var27_54.commit();
                                                    }
                                                    catch (Exception var28_55) {
                                                        var29_14 = JmsRequestHandlerImpl.l;
                                                        JmsRequestHandlerImpl.a.log(Level.WARNING, var29_14[51], var28_55);
                                                    }
                                                    break block110;
                                                }
                                                try {
                                                    var29_15 = JmsRequestHandlerImpl.l;
                                                    JmsRequestHandlerImpl.a.log(Level.FINE, var29_15[31]);
                                                    var27_54.rollback();
                                                }
                                                catch (Exception var28_56) {
                                                    var29_16 = JmsRequestHandlerImpl.l;
                                                    JmsRequestHandlerImpl.a.log(Level.WARNING, var29_16[44], var28_56);
                                                }
                                            }
                                            try {
                                                if (this.k == null) break block115;
                                                this.k.close();
                                                break block115;
                                            }
                                            catch (IOException v21) {
                                                throw JmsRequestHandlerImpl.a(v21);
                                            }
                                            {
                                                catch (JMSException var26_53) {
                                                    JmsRequestHandlerImpl.a.log(Level.FINE, JmsRequestHandlerImpl.l[19] + JmsUtil.getJMSErrorMessage(var26_53), ExceptionUtils.getDebugException((Throwable)var26_53));
                                                }
                                            }
                                        }
                                        throw var25_51;
                                    }
                                    if (!var3_3) break block105;
                                    if (var11_5[0] == AssertionStatus.NONE) ** GOTO lbl285
                                    break block121;
                                    catch (Exception v22) {
                                        throw JmsRequestHandlerImpl.a(v22);
                                    }
                                }
                                if (var2_2.getMessageProducer() == null) break block106;
                                break block122;
                                catch (Exception v23) {
                                    throw JmsRequestHandlerImpl.a(v23);
                                }
                            }
                            try {
                                block123: {
                                    if (!this.a(var4_4, var2_2.getMessageProducer())) break block106;
                                    break block123;
                                    catch (Exception v24) {
                                        throw JmsRequestHandlerImpl.a(v24);
                                    }
                                }
                                v25 = true;
                                break block107;
                            }
                            catch (Exception v26) {
                                throw JmsRequestHandlerImpl.a(v26);
                            }
                        }
                        v25 = false;
                    }
                    var16_24 = v25;
                    var17_27 = var2_2.getSession();
                    try {
                        if (!var12_6[0] || !var16_24) break block108;
                    }
                    catch (Exception v27) {
                        throw JmsRequestHandlerImpl.a(v27);
                    }
                    try {
                        var29_11 = JmsRequestHandlerImpl.l;
                        JmsRequestHandlerImpl.a.log(Level.FINE, var29_11[23]);
                        var17_27.commit();
                    }
                    catch (Exception var18_33) {
                        var29_11 = JmsRequestHandlerImpl.l;
                        JmsRequestHandlerImpl.a.log(Level.WARNING, var29_11[51], var18_33);
                    }
                    break block105;
                }
                try {
                    var29_11 = JmsRequestHandlerImpl.l;
                    JmsRequestHandlerImpl.a.log(Level.FINE, var29_11[31]);
                    var17_27.rollback();
                }
                catch (Exception var18_34) {
                    var29_11 = JmsRequestHandlerImpl.l;
                    JmsRequestHandlerImpl.a.log(Level.WARNING, var29_11[44], var18_34);
                }
            }
            try {
                if (this.k == null) break block109;
                this.k.close();
            }
            catch (IOException v28) {
                throw JmsRequestHandlerImpl.a(v28);
            }
            {
                catch (JMSException var16_25) {
                    var29_11 = JmsRequestHandlerImpl.l;
                    JmsRequestHandlerImpl.a.log(Level.FINE, var29_11[19] + JmsUtil.getJMSErrorMessage(var16_25), ExceptionUtils.getDebugException((Throwable)var16_25));
                }
            }
        }
    }

    private ContentTypeHeader a(Message message, Properties properties) throws JmsRuntimeException, JMSException, IOException {
        ContentTypeHeader contentTypeHeader;
        block22: {
            String string;
            block21: {
                String string2;
                String string3;
                block20: {
                    try {
                        if (message instanceof TextMessage) {
                            return ContentTypeHeader.XML_DEFAULT;
                        }
                    }
                    catch (JmsRuntimeException jmsRuntimeException) {
                        throw JmsRequestHandlerImpl.a(jmsRuntimeException);
                    }
                    string3 = properties.getProperty(JmsConnection.PROP_CONTENT_TYPE_SOURCE);
                    string2 = properties.getProperty(JmsConnection.PROP_CONTENT_TYPE_VAL);
                    try {
                        if (null != string3 && !"".equals(string3)) break block20;
                    }
                    catch (JmsRuntimeException jmsRuntimeException) {
                        throw JmsRequestHandlerImpl.a(jmsRuntimeException);
                    }
                    String[] stringArray = l;
                    a.warning(stringArray[14]);
                    String string4 = message.getStringProperty(stringArray[0]);
                    if (string4 != null) {
                        a.info(stringArray[6] + string4);
                        contentTypeHeader = ContentTypeHeader.create((String)string4);
                    } else {
                        stringArray = l;
                        a.info(stringArray[45] + ContentTypeHeader.XML_DEFAULT.toString());
                        contentTypeHeader = ContentTypeHeader.XML_DEFAULT;
                    }
                    break block22;
                }
                if (JmsConnection.CONTENT_TYPE_SOURCE_HEADER.equals(string3)) {
                    string = message.getStringProperty(string2);
                    try {
                        try {
                            if (string != null && !string.isEmpty()) break block21;
                        }
                        catch (JmsRuntimeException jmsRuntimeException) {
                            throw JmsRequestHandlerImpl.a(jmsRuntimeException);
                        }
                        throw new JmsRuntimeException(l[35] + string2);
                    }
                    catch (JmsRuntimeException jmsRuntimeException) {
                        throw JmsRequestHandlerImpl.a(jmsRuntimeException);
                    }
                }
                string = string2;
            }
            contentTypeHeader = ContentTypeHeader.create((String)string);
            try {
                try {
                    try {
                        try {
                            if (contentTypeHeader == null || contentTypeHeader.matches(l[40], l[2])) break block22;
                        }
                        catch (JmsRuntimeException jmsRuntimeException) {
                            throw JmsRequestHandlerImpl.a(jmsRuntimeException);
                        }
                        if (contentTypeHeader.matches(l[48], l[22])) break block22;
                    }
                    catch (JmsRuntimeException jmsRuntimeException) {
                        throw JmsRequestHandlerImpl.a(jmsRuntimeException);
                    }
                    if (contentTypeHeader.matches(l[3], "*")) break block22;
                }
                catch (JmsRuntimeException jmsRuntimeException) {
                    throw JmsRequestHandlerImpl.a(jmsRuntimeException);
                }
                a.log(Level.WARNING, l[34], contentTypeHeader.toString());
            }
            catch (JmsRuntimeException jmsRuntimeException) {
                throw JmsRequestHandlerImpl.a(jmsRuntimeException);
            }
        }
        return contentTypeHeader;
    }

    private void a(JmsEndpointConfig jmsEndpointConfig, Message message) throws JmsRuntimeException {
        String[] stringArray = l;
        String string = stringArray[52] + message.getClass().getName() + stringArray[5] + jmsEndpointConfig.getEndpoint().getDestinationName() + stringArray[15];
        a.warning(string);
        throw new JmsRuntimeException(string);
    }

    private Message a(JmsBag jmsBag, JmsEndpointConfig jmsEndpointConfig, Message message) throws JMSException, JmsRuntimeException {
        TextMessage textMessage = null;
        if (message instanceof TextMessage) {
            textMessage = jmsBag.getSession().createTextMessage();
        } else if (message instanceof BytesMessage) {
            textMessage = jmsBag.getSession().createBytesMessage();
        } else {
            this.a(jmsEndpointConfig, message);
        }
        return textMessage;
    }

    /*
     * Unable to fully structure code
     */
    private boolean a(Message var1_1, Message var2_2, JmsBag var3_3, JmsEndpointConfig var4_4, PolicyEnforcementContext var5_5) {
        var6_6 = false;
        try {
            block25: {
                block28: {
                    block24: {
                        var7_7 = var3_3.getJndiContext();
                        var8_10 = var4_4.a(var1_1, var7_7);
                        try {
                            if (var8_10 != null) break block24;
                            JmsRequestHandlerImpl.a.fine(JmsRequestHandlerImpl.l[41]);
                            break block25;
                        }
                        catch (JMSException v0) {
                            throw JmsRequestHandlerImpl.a((Exception)v0);
                        }
                    }
                    var17_13 = JmsRequestHandlerImpl.l;
                    JmsRequestHandlerImpl.a.fine(var17_13[39] + String.valueOf(var8_10));
                    var9_15 = var3_3.getSession();
                    try {
                        this.k = this.getMessageProducer(var8_10, var9_15);
                        var2_2.setJMSDeliveryMode(var1_1.getJMSDeliveryMode());
                        var2_2.setJMSPriority(var1_1.getJMSPriority());
                        var2_2.setJMSExpiration(var1_1.getJMSExpiration());
                        v1 = var4_4.getEndpoint().isUseMessageIdForCorrelation() != false ? var1_1.getJMSMessageID() : var1_1.getJMSCorrelationID();
                    }
                    catch (JMSException v2) {
                        throw JmsRequestHandlerImpl.a((Exception)v2);
                    }
                    var10_16 = v1;
                    var2_2.setJMSCorrelationID(var10_16);
                    var11_17 = (HeadersKnob)var5_5.getResponse().getKnob(HeadersKnob.class);
                    if (var11_17 == null) break block28;
                    var17_13 = JmsRequestHandlerImpl.l;
                    var12_18 = var11_17.getHeaders(var17_13[27]);
                    for (Object var14_21 : var12_18) {
                        var2_2.setObjectProperty((String)var14_21.getKey(), var14_21.getValue());
                    }
                    var17_13 = JmsRequestHandlerImpl.l;
                    var13_20 = var11_17.getHeaders(var17_13[53]);
                    var14_21 = var13_20.iterator();
                    while (var14_21.hasNext()) {
                        block26: {
                            block31: {
                                block27: {
                                    block29: {
                                        var15_22 = (Header)var14_21.next();
                                        if (!JmsUtil.isJmsHeader((String)var15_22.getKey())) break block26;
                                        if (((String)var15_22.getKey()).equals(JmsRequestHandlerImpl.l[1])) ** GOTO lbl50
                                        break block29;
                                        catch (JMSException v3) {
                                            throw JmsRequestHandlerImpl.a((Exception)v3);
                                        }
                                    }
                                    try {
                                        block30: {
                                            if (!((String)var15_22.getKey()).equals(JmsRequestHandlerImpl.l[32])) break block27;
                                            break block30;
                                            catch (JMSException v4) {
                                                throw JmsRequestHandlerImpl.a((Exception)v4);
                                            }
                                        }
                                        if (!(var15_22.getValue() instanceof String)) break block27;
                                    }
                                    catch (JMSException v5) {
                                        throw JmsRequestHandlerImpl.a((Exception)v5);
                                    }
                                    var16_23 = JmsUtil.cast(var7_7.lookup((String)var15_22.getValue()), Destination.class);
                                    break block31;
                                }
                                var16_23 = var15_22.getValue();
                            }
                            JmsUtil.setJmsHeader(var2_2, (Pair<String, Object>)new Pair((Object)((String)var15_22.getKey()), var16_23));
                            continue;
                        }
                        var17_13 = JmsRequestHandlerImpl.l;
                        JmsRequestHandlerImpl.a.log(Level.WARNING, var17_13[49] + (String)var15_22.getKey() + var17_13[47]);
                    }
                }
                try {
                    v6 = var2_2.getJMSExpiration() > 0L ? var2_2.getJMSExpiration() - System.currentTimeMillis() : 0L;
                }
                catch (JMSException v7) {
                    throw JmsRequestHandlerImpl.a((Exception)v7);
                }
                var12_19 = v6;
                try {
                    if (var12_19 < 0L) {
                        JmsRequestHandlerImpl.a.log(Level.WARNING, JmsRequestHandlerImpl.l[16]);
                        throw new JmsMessageExpiredException();
                    }
                }
                catch (JMSException v8) {
                    throw JmsRequestHandlerImpl.a((Exception)v8);
                }
                this.k.send(var2_2, var2_2.getJMSDeliveryMode(), var2_2.getJMSPriority(), var12_19);
                var17_13 = JmsRequestHandlerImpl.l;
                JmsRequestHandlerImpl.a.fine(var17_13[42] + String.valueOf(var8_10));
            }
            var6_6 = true;
        }
        catch (JMSException var7_8) {
            try {
                v9 = JmsUtil.isCausedByExpectedJMSException(var7_8) != false ? null : var7_8;
            }
            catch (JMSException v10) {
                throw JmsRequestHandlerImpl.a((Exception)v10);
            }
            var8_11 = v9;
            var17_14 = JmsRequestHandlerImpl.l;
            JmsRequestHandlerImpl.a.log(Level.WARNING, var17_14[37] + JmsUtil.getJMSErrorMessage(var7_8), var8_11);
        }
        catch (NamingException var7_9) {
            try {
                v11 = JmsUtil.isCausedByExpectedNamingException(var7_9) != false ? null : var7_9;
            }
            catch (JMSException v12) {
                throw JmsRequestHandlerImpl.a((Exception)v12);
            }
            var8_12 = v11;
            JmsRequestHandlerImpl.a.log(Level.WARNING, JmsRequestHandlerImpl.l[24] + JmsUtil.getJNDIErrorMessage(var7_9), var8_12);
        }
        return var6_6;
    }

    protected MessageProducer getMessageProducer(Destination destination, Session session) throws JMSException {
        return JmsUtil.createMessageProducer(session, destination);
    }

    private boolean a(Message message, MessageProducer messageProducer) {
        boolean bl2 = false;
        try {
            messageProducer.send(message);
            bl2 = true;
        }
        catch (JMSException jMSException) {
            JMSException jMSException2;
            try {
                jMSException2 = JmsUtil.isCausedByExpectedJMSException(jMSException) ? null : jMSException;
            }
            catch (JMSException jMSException3) {
                throw JmsRequestHandlerImpl.a((Exception)((Object)jMSException3));
            }
            JMSException jMSException4 = jMSException2;
            a.log(Level.WARNING, l[28] + JmsUtil.getJMSErrorMessage(jMSException), jMSException4);
        }
        return bl2;
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[54];
                var3_1 = 0;
                var2_2 = "<U\\i>94RnKm>\n5waO>',\u0006n]\u0003\u0007W^\u000b\u001eJBq24!\u000bS]s\r\u001cVGn/222[Ai>%\u0004_U\\=\u0018\u0019UGs?w!_Y]s/2.\u000b\u001aFd+2`\u0010\\\u0012\u0014\u0016Uxp(\u001a%\fISz>\u001a!\u0007xKi>$!:H@r)w#\u0013UAt50`\r_Am493\u001a\u001aBo435\u001c_@'{\u0010\u0012_An:0%/H]~>$3\u0010H\u001a\u0012_An:0%,O_p:%9>OVt/\u0011!\u001cN]o\"\u0019-U^q29'_XS~0w\n2i\u0012n>$3\u0016U\\3\u0013\u001eOVt/\u0014/\u0011NWe/\u0011!\u001cN]o\"/\u001cU_37`4\u001aYZ3(22\t_@3/%!\u0011IBr)#n\u0015WA3/80\u0016Y\u007f|(#%\ru\\q\"^\u0011U\u0012~494\u001aTF=/.0\u001a\u001aAm>4)\u0019SWy{1/\r\u001aFu2$`\u0012_An:0%S\u001aSi/2-\u000fN[s<w4\u0010\u001aTt53`\u0010TW=.$)\u0011]\u0012^494\u001aTF0\u000f.0\u001a\u001aBo4'%\rNK2Q\u001a\u0012R5;9_nWe/\u001a%\fISz>w!\u0011^\u0012_\"#%\fwWn(6'\u001a\u001aSo>w3\nJBr)#%\u001b/*TS\u007f72`\u000bU\u0012n>9$_p\u007fN{:%\fISz>m`5wa=623\f[Ux{28\u000fS@x?\f\f_@k>%\u0003\u0010TTt<\u0013\fNSn3\u001a!\u0011[Ux)\u0011!\u001cN]o\"!:H@r)w#\u0013UAt50`\r_Am493\u001a\u001aBo435\u001c_@'{79UGs?w\n2i\u0012p>$3\u001e]W=+%/\u000f_@i\"w4\u0010\u001aGn>w!\f\u001aaR\u001a\u0007\u0001\u001cN[r5w6\u001eVGxaw61UF=+%/\u001c_An29'_WWn(6'\u001a\u001aTo4:`\u000bUBt8wh\u0011UVx{>3_T]i{:!\fNWor\u0005\u000fVSt5\u0017<U_p2#4\u0016TU=\u0011\u001a\u0013_IWn(>/\u0011\u0014Q:H@r)w4\rC[s<w4\u0010\u001a^r4<5\u000f\u001aFu>w$\u001aIFt564\u0016U\\=>9$\u000fU[s/w&\rU_=+%%\f_F=)20\u0013C\u001fi4w1\n_Gx{9!\u0012_\b=\u001d:H@r)w#\u0010W_t/#)\u0011]\u0012W\u0016\u0004`\f_An28.Q :H@r)w0\rUQx($)\u0011]\u0012o>&5\u001aIF=623\f[Ux\f5wa=\u000b%/\u000f_@i\".:H@r)w3\u001aTVt50`\r_Ch>$4_N]==6)\u0013O@x{3%\fN[s:#)\u0010T\b=!<UGq?9g\u000b\u001aQo>64\u001a\u001a@x('/\u0011IW=623\f[Uxz\u001d\u0012_An:0%/H]~>$3\u0016TUX-2.\u000byZ|59%\u0013\u0019-U^q29'_XS~0w\n2i\u0012n>$3\u0016U\\3\u000e5waY>$4\u0016TSi28.\u0017<U_p2#4\u0016TU=\u0011\u001a\u0013_IWn(>/\u0011\u0014K<U\\i>94+CBx{12\u0010W\u0012W\u0016\u0004`\u000fH]m>%4\u0006\u001a\\r/w2\u001aY]z5>:\u001a^\u001e=669_YSh(2`\u000fU^t8.`\u000bU\u0012{:>,E\u001aI-&+:BBx8#%\u001b\u001aqr5#%\u0011Nfd+2`5wa=+%/\u000f_@i\"w.\u0010N\u0012n>#z_\":H@r)w$\nH[s<w\n2i\u0012n>$3\u0016U\\=)8,\u0013XS~0y\u0018:H@r)w3\u001aTVt50`\r_Am493\u001a\u0000\u0012\u001d<UGq?9g\u000b\u001aS~09/\bVWy<2`\u0012_An:0%^\u0014,_\\y29'_HWn+8.\f_\u0012i4w\u0004\u000b_Ji\u00191U\u0012o>$0\u0010TAx{ )\u0013V\u0012\u007f>w3\u001aTF<\u0011,_\\i{%%\fJ]s(2`\u000bU\u0012\f5wa=\u000b%/\u000f_@i\"\":H@r)w$\nH[s<w\n2i\u0012n>$3\u0016U\\=)8,\u0013XS~0y\";SVs|#`\u0019S\\y{6`\u001cU\\i>94_NKm>y`*I[s<w\":H@r)w0\rUQx($)\u0011]\u0012u:%$\bS@x?w3\u001aHDt82\u0013]\u001a[n{9/\u000b\u001aAh+'/\rNWyu\u0004\u000b_Ji\f5wa=\u00132!\u001b_@=y\u001a,J@t50`<U\\i>/4_SA=)21\nS@x?\u001d:H@r)w#\u0010W_t/#)\u0011]\u0012W\u0016\u0004`\f_An28.Q";
                var4_3 = "<U\\i>94RnKm>\n5waO>',\u0006n]\u0003\u0007W^\u000b\u001eJBq24!\u000bS]s\r\u001cVGn/222[Ai>%\u0004_U\\=\u0018\u0019UGs?w!_Y]s/2.\u000b\u001aFd+2`\u0010\\\u0012\u0014\u0016Uxp(\u001a%\fISz>\u001a!\u0007xKi>$!:H@r)w#\u0013UAt50`\r_Am493\u001a\u001aBo435\u001c_@'{\u0010\u0012_An:0%/H]~>$3\u0010H\u001a\u0012_An:0%,O_p:%9>OVt/\u0011!\u001cN]o\"\u0019-U^q29'_XS~0w\n2i\u0012n>$3\u0016U\\3\u0013\u001eOVt/\u0014/\u0011NWe/\u0011!\u001cN]o\"/\u001cU_37`4\u001aYZ3(22\t_@3/%!\u0011IBr)#n\u0015WA3/80\u0016Y\u007f|(#%\ru\\q\"^\u0011U\u0012~494\u001aTF=/.0\u001a\u001aAm>4)\u0019SWy{1/\r\u001aFu2$`\u0012_An:0%S\u001aSi/2-\u000fN[s<w4\u0010\u001aTt53`\u0010TW=.$)\u0011]\u0012^494\u001aTF0\u000f.0\u001a\u001aBo4'%\rNK2Q\u001a\u0012R5;9_nWe/\u001a%\fISz>w!\u0011^\u0012_\"#%\fwWn(6'\u001a\u001aSo>w3\nJBr)#%\u001b/*TS\u007f72`\u000bU\u0012n>9$_p\u007fN{:%\fISz>m`5wa=623\f[Ux{28\u000fS@x?\f\f_@k>%\u0003\u0010TTt<\u0013\fNSn3\u001a!\u0011[Ux)\u0011!\u001cN]o\"!:H@r)w#\u0013UAt50`\r_Am493\u001a\u001aBo435\u001c_@'{79UGs?w\n2i\u0012p>$3\u001e]W=+%/\u000f_@i\"w4\u0010\u001aGn>w!\f\u001aaR\u001a\u0007\u0001\u001cN[r5w6\u001eVGxaw61UF=+%/\u001c_An29'_WWn(6'\u001a\u001aTo4:`\u000bUBt8wh\u0011UVx{>3_T]i{:!\fNWor\u0005\u000fVSt5\u0017<U_p2#4\u0016TU=\u0011\u001a\u0013_IWn(>/\u0011\u0014Q:H@r)w4\rC[s<w4\u0010\u001a^r4<5\u000f\u001aFu>w$\u001aIFt564\u0016U\\=>9$\u000fU[s/w&\rU_=+%%\f_F=)20\u0013C\u001fi4w1\n_Gx{9!\u0012_\b=\u001d:H@r)w#\u0010W_t/#)\u0011]\u0012W\u0016\u0004`\f_An28.Q :H@r)w0\rUQx($)\u0011]\u0012o>&5\u001aIF=623\f[Ux\f5wa=\u000b%/\u000f_@i\".:H@r)w3\u001aTVt50`\r_Ch>$4_N]==6)\u0013O@x{3%\fN[s:#)\u0010T\b=!<UGq?9g\u000b\u001aQo>64\u001a\u001a@x('/\u0011IW=623\f[Uxz\u001d\u0012_An:0%/H]~>$3\u0016TUX-2.\u000byZ|59%\u0013\u0019-U^q29'_XS~0w\n2i\u0012n>$3\u0016U\\3\u000e5waY>$4\u0016TSi28.\u0017<U_p2#4\u0016TU=\u0011\u001a\u0013_IWn(>/\u0011\u0014K<U\\i>94+CBx{12\u0010W\u0012W\u0016\u0004`\u000fH]m>%4\u0006\u001a\\r/w2\u001aY]z5>:\u001a^\u001e=669_YSh(2`\u000fU^t8.`\u000bU\u0012{:>,E\u001aI-&+:BBx8#%\u001b\u001aqr5#%\u0011Nfd+2`5wa=+%/\u000f_@i\"w.\u0010N\u0012n>#z_\":H@r)w$\nH[s<w\n2i\u0012n>$3\u0016U\\=)8,\u0013XS~0y\u0018:H@r)w3\u001aTVt50`\r_Am493\u001a\u0000\u0012\u001d<UGq?9g\u000b\u001aS~09/\bVWy<2`\u0012_An:0%^\u0014,_\\y29'_HWn+8.\f_\u0012i4w\u0004\u000b_Ji\u00191U\u0012o>$0\u0010TAx{ )\u0013V\u0012\u007f>w3\u001aTF<\u0011,_\\i{%%\fJ]s(2`\u000bU\u0012\f5wa=\u000b%/\u000f_@i\"\":H@r)w$\nH[s<w\n2i\u0012n>$3\u0016U\\=)8,\u0013XS~0y\";SVs|#`\u0019S\\y{6`\u001cU\\i>94_NKm>y`*I[s<w\":H@r)w0\rUQx($)\u0011]\u0012u:%$\bS@x?w3\u001aHDt82\u0013]\u001a[n{9/\u000b\u001aAh+'/\rNWyu\u0004\u000b_Ji\f5wa=\u00132!\u001b_@=y\u001a,J@t50`<U\\i>/4_SA=)21\nS@x?\u001d:H@r)w#\u0010W_t/#)\u0011]\u0012W\u0016\u0004`\f_An28.Q".length();
                var1_4 = 12;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = JmsRequestHandlerImpl.a(v0, JmsRequestHandlerImpl.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "W%+\u0002H[_a`%\u0002R^[b%h\bG\rOk3=\u0017QBHq%,GUTJ``\nO\r\u001bGiH[a%:";
                    var4_3 = "W%+\u0002H[_a`%\u0002R^[b%h\bG\rOk3=\u0017QBHq%,GUTJ``\nO\r\u001bGiH[a%:".length();
                    var1_4 = 37;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 46;
                        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++] = JmsRequestHandlerImpl.a(v0, JmsRequestHandlerImpl.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;
            }
        }
        JmsRequestHandlerImpl.l = var5;
        JmsRequestHandlerImpl.a = Logger.getLogger(JmsRequestHandlerImpl.class.getName());
        JmsRequestHandlerImpl.b = ConfigFactory.getBooleanProperty((String)JmsRequestHandlerImpl.l[13], (boolean)true);
    }

    private static Exception a(Exception exception) {
        return exception;
    }

    private static char[] a(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x14);
        }
        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 -> 43;
                    case 1 -> 110;
                    case 2 -> 102;
                    case 3 -> 73;
                    case 4 -> 15;
                    case 5 -> 3;
                    default -> 20;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

