public static JMSConnector matchConnector()

in axis-rt-transport-jms/src/main/java/org/apache/axis/transport/jms/JMSConnectorFactory.java [56:136]


     public static JMSConnector matchConnector(java.util.Set connectors,
                                               HashMap connectorProps,
                                               HashMap cfProps,
                                               String username,
                                               String password,
                                               JMSVendorAdapter adapter)
    {
        java.util.Iterator iter = connectors.iterator();
        while (iter.hasNext())
        {
            JMSConnector conn = (JMSConnector) iter.next();

            // username
            String connectorUsername = conn.getUsername();
            if (!( ((connectorUsername == null) && (username == null)) ||
                   ((connectorUsername != null) && (username != null) && (connectorUsername.equals(username))) ))
                continue;

            // password
            String connectorPassword = conn.getPassword();
            if (!( ((connectorPassword == null) && (password == null)) ||
                   ((connectorPassword != null) && (password != null) && (connectorPassword.equals(password))) ))
                continue;

            // num retries
            int connectorNumRetries = conn.getNumRetries();
            String propertyNumRetries = (String)connectorProps.get(JMSConstants.NUM_RETRIES);
            int numRetries = JMSConstants.DEFAULT_NUM_RETRIES;
            if (propertyNumRetries != null)
                numRetries = Integer.parseInt(propertyNumRetries);
            if (connectorNumRetries != numRetries)
                continue;

            // client id
            String connectorClientID = conn.getClientID();
            String clientID = (String)connectorProps.get(JMSConstants.CLIENT_ID);
            if (!( ((connectorClientID == null) && (clientID == null))
                   ||
                   ((connectorClientID != null) && (clientID != null) && connectorClientID.equals(clientID)) ))
                continue;

            // domain
            String connectorDomain = (conn instanceof QueueConnector) ? JMSConstants.DOMAIN_QUEUE : JMSConstants.DOMAIN_TOPIC;
            String propertyDomain = (String)connectorProps.get(JMSConstants.DOMAIN);
            String domain = JMSConstants.DOMAIN_DEFAULT;
            if (propertyDomain != null)
                domain = propertyDomain;
            if (!( ((connectorDomain == null) && (domain == null))
                   ||
                   ((connectorDomain != null) && (domain != null) && connectorDomain.equalsIgnoreCase(domain)) ))
                continue;

            // the connection factory must also match for the connector to be reused
            JMSURLHelper jmsurl = conn.getJMSURL();
            if (adapter.isMatchingConnectionFactory(conn.getConnectionFactory(), jmsurl, cfProps))
            {
                // attempt to reserve the connector
                try
                {
                    JMSConnectorManager.getInstance().reserve(conn);

                    if (log.isDebugEnabled()) {
                        log.debug("JMSConnectorFactory: Found matching connector");
                    }
                }
                catch (Exception e)
                {
                    // ignore. the connector may be in the process of shutting down, so try the next element
                    continue;
                }

                return conn;
            }
        }

        if (log.isDebugEnabled()) {
            log.debug("JMSConnectorFactory: No matching connectors found");
        }

        return null;
    }